当前位置:首页 > 初赛 > 正文内容

信息学奥赛知识点(十五)----链表

亿万年的星光5个月前 (06-15)初赛578


4.1 基本概念

1)用来存储数据变量叫做数据域。

2)用来存“直接后继(前趋)元素的地址”的指针叫做指针域。

3)数据域和指针域构成的元素叫做结点。

4”->” 箭头运算是结构体指针访问其指向的成员变量的操作符.

4.2单链表

(1)单链表的定义:

1.  struct Node {

2.   int data;

3.   Node * next;

4.  };

5.  Node * p;



(2)单链表的查找

//(按序号查找)在单链表中查找第i个结点 找到则返回存储位置

1. node *search1(node *l,int i) {

2.   node *p;//新建一个结点指针

3.   int j=0;//建立一个计数器

4.   if(i<=0)return NULL;//判断结点位置的合法性

5.   p=l; //新结点p指向头结点l 从头开始扫描

6.   while(p->next!=NULL&&j<i) {

7.    p=p->next;//指向下一结点

8.    j++;//计数

9.   }

10.  if(i==j) return p;//找到了就返回p指针

11.  else return NULL;

12. }



//(按值查找)在单链表中查找值为e的结点  找到返回结点

1.  node *search2(node *l,int e){

2.   node *p;//新建一个结点指针

3.   p=l->next ;//从第一个结点开始,既头结点后面那个

4.   while(p!=NULL){

5.    if(p->data!=e)p=p->next;//指向下个结点

6.    else break;//找到则退出循环

7.      }

8.   return p;//返回p指针

9.  }



(3)单链表的插入

1.  s->data=e; //将结点sdata设置为e

2.  s->next=p->next; //链表指针的赋值,将p的下一个结点的位置赋值给s的下一个结点

3.  p->next=s; //实现插入,把s接到p的下一个结点上




(4)单链表的删除

    

4.3双链表

(1)双链表的定义

1.  struct Node{

2.   //data表示数据

3.      int data;

4.   //pre node表示前趋   

5.      Node *pre;

6.   //next node表示后继    

7.      Node *next;

8.  }Node,*a;





(2)双链表的插入

1.  Node->next=p->next;

2.  p->next->pre=Node;

3.  Node->pre=p;

4.  p->next=Node;



(3)双链表的删除

1.  Node->pre->next=Node->next;

2.  Node->next->pre=Node->pre;


扫描二维码推送至手机访问。

版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

分享给朋友:

相关文章

信息学奥赛知识点(十二)----栈和队列

信息学奥赛知识点(十二)----栈和队列

一、栈栈是只能在某一端插入和删除的特殊线性表。用桶堆积物品,先堆进行的压在底下,随后一件一件往上堆。取走时,只能从上面一件一件取。堆和取都在顶部进行。底部一般是不动的。栈就是一种类似桶堆积物品的数据结...

信息学奥赛知识点(七)----原码补码反码

一、数的原码、补码和反码1.机器数与真值在计算机中,表示数值的数字符号只有0和1两个数码,我们规定最高位为符号位,并用0表示正数符号,用1表示负数符号。这样,机器中的数值和符号全“数码化”了。为了简化...

信息学奥赛知识点(五)----进制转换

信息学奥赛知识点(五)----进制转换

一、进位计数制的基本概念将数字符号按排列成数位,并遵照某种由低到高的进位方式计数表述数值的方法,称为计数制。1.十进制十进制计数由0,1,2,3,4,5,6,7,8,9共10个数字符号组成。相同数字符...

信息学奥赛知识点(三)----计算机软件系统

信息学奥赛知识点(三)----计算机软件系统

软件是计算机的灵魂,硬件为软件提供了运行平台,软件和硬件相互关联,两者之间相互转换,相互补充。计算机的软件系统分成系统软件和应用软件两大类。一、系统软件常见的操作系统:分为桌面操作系统、服务器操作系统...

信息学奥赛知识点(十三)----树和二叉树(上)

信息学奥赛知识点(十三)----树和二叉树(上)

树是一种非线性结构,栈和队列都是线性结构(线性一般是指每一个元素都通常只有一个前驱和一个后继)一、树的定义一棵树是由n(n>0)个元素组成的有限集合,其中:(1)每个元素称为结点(node)(2...

信息学奥赛知识点(八)----计算机网络

信息学奥赛知识点(八)----计算机网络

一、网络的定义所谓计算机网络,就是利用通信线路和设备,把分布在不同地理位置上的多台计算机连接起来。计算机网络是现代通信技术与计算机技术相结合的产物。网络中的计算机与计算机之间的通信依靠协议进行。协议是...