电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

C++链表基本操作VIP免费

C++链表基本操作_第1页
1/12
C++链表基本操作_第2页
2/12
C++链表基本操作_第3页
3/12
C++链表基本操作我们知道,数组式计算机根据事先定义好的数组类型与长度自动为其分配一连续的存储单元,相同数组的位置和距离都是固定的链表是一种动态数据结构,他的特点是用一组任意的存储单元(可以是连续的,也可以是不连续的)存放数据元素。链表中每一个元素成为“结点”,每一个结点都是由数据域和指针域组成的,每个结点中的指针域指向下一个结点。Head是“头指针”,表示链表的开始,用来指向第一个结点,而最后一个指针的指针域为NULL(空地址),表示链表的结束。可以看出链表结构必须利用指针才能实现,即一个结点中必须包含一个指针变量,用来存放下一个结点的地址。实际上,链表中的每个结点可以用若干个数据和若干个指针。结点中只有一个指针的链表称为单链表,这是最简单的链表结构。structNode{intData;Node*next;};这里用到了结构体类型。其中,*next是指针域,用来指向该结点的下一个结点;Data是一个整形变量,用来存放结点中的数据。当然,Data可以是任何数据类型,包括结构体类型或类类型。在此基础上,我们在定义一个链表类list,其中包含链表结点的插入,删除,输出等功能的成员函数。classlist{Node*head;public:list(){head=NULL;}voidinsertlist(intaDate,intbDate);//链表结点的插入voidDeletelist(intaDate);//链表结点的删除voidOutputlist();//链表结点的输出Node*Gethead(){returnhead;}};2.链表结点的访问由于链表中的各个结点是由指针链接在一起的,其存储单元文笔是连续的,因此,对其中任意结点的地址无法向数组一样,用一个简单的公式计算出来,进行随机访问。只能从链表的头指针(即head)开始,用一个指针p先指向第一个结点,然后根据结点p找到下一个结点。以此类推,直至找到所要访问的结点或到最后一个结点(指针为空)为止。下面我们给出上述链表的输出函数;voidlist::outputlist(){Node*current=head;while(current!=NULL){cout<Data<<"";current=current->next;}cout<Data=bDate;//设b为此结点p=head;if(head==NULL)//若是空表,使b作为第一个结点{head=s;s->next=NULL;}elseif(p->Data==aDate)//若a是第一个结点{s->next=p;head=s;}else{while(p->Data!=aDate&&p->next!=NULL)//查找结点a{q=p;p=p->next;}if(p->Data==aDate)///若有结点a{q->next=s;s->next=p;}else//若没有结点a;{p->next=s;s->next=NULL;}}}4.链表结点的删除如果要在链表中删除结点a并释放被删除的结点所占的存储空间,则需要考虑下列几种情况。(1)若要删除的结点a是第一个结点,则把head指向a的下一个结点。(2)若要删除的结点a存在于链表中,但不是第一个结点,则应使a得上一个结点a_k-1的指针域指向a的下一个结点a_k+1。(3)空表或要删除的结点a不存在,则不做任何改变。voidlist::deletelist(intaDate)//设aDate是要删除的结点a中的数据成员{Node*p,*q;//p用于指向结点a,q用于指向结a的前一个结点p=head;if(p==NULL)//若是空表return;if(p->Data==aDate)//若a是第一个结点{head=p->next;deletep;}else{while(p->Data!=aDate&&p->next!=NULL)//a既不是头结点也不是终结点,则查找结点a{q=p;p=p->next;}if(p->Data==aDate)//若有结点a{q->next=p->next;deletep;}}}例题;利用以上三个链表操作成员函数insertlist,deletelist.outputlist,可...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

C++链表基本操作

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部