首页 > 编程知识 正文

双向链表的创建,双向链表的前插c语言

时间:2023-05-06 17:37:38 阅读:48287 作者:4491

title:双向链表的基本操作

date :2020-10-1221336012336051

tags:双向链表

categories:数据结构

双向链表的基本操作

开始空双向链表的末尾插入,随机反转添加节点的顺序,按相反的顺序打印双向链表,依次添加节点,依次添加节点//双向链表# include stdio.h # include stdll 结构链接列表*下一步; 结构链接列表* prior; }节点,*列表; //初始化空双向链表voidinitlist(list*PPhead ) listp=(list ) malloc (sizeof ) node ); * Pp头=p; p-data=0; p-next=空值; //双向链表中5个值voidaddnode (列表头) { list temp=pHead; for(intI=0; i 6; I ) listp=(list ) malloc ) sizeof ) node ); 时间下一步=p; p-data=i 1; p-next=空值; p-prior=temp; temp=temp-next; //双向链表voidprintlist(listpfirstnode )//双向链表list temp=显示先打印pfirst node的printf (双向链表信息:n ) wile(temp!=null(printf('%d ',temp-data ); temp=temp-next; }printf((n ); //按顺序排列双向链表voidorderandreverseorderprint (list phead ) { list temp=pHead; 利用printf ()双链表的特性,实现先顺序打印,再反向打印(n ); 威尔(temp-next!=null(printf('%d ',temp-next-data ) ); temp=temp-next; //当前,temp的值是最后一个节点的地址,沿着打印while(temp!=phead(printf('%d”,临时数据); temp=temp-prior; }printf((n );//按顺序添加一个节点。 I按顺序,data将节点添加到数据voidaddbyserial (列表头,int i,int data )//中,要添加的节点前面一个节点的范围从//0节点)到最后一个空节点printf 列表时间=phead; for(j=0; Ji-1特攻队!=NULL; j )时间=时间下一步; if(temp==null||Ji-1 ) { printf )传递的序列号(d )不在允许插入的范围内(,I ); 返回; (插入//末尾时,末尾的节点后面没有节点,需要特殊取出来考虑。 listp=(list ) malloc ) sizeof (node ); 对数据=数据; if(temp-next==null ) { p-next=NULL; p-prior=temp; 时间下一步=p; 返回; (} p-next=temp-next; temp-next-prior=p; p-prior=temp; 时间下一步=p; (//一个节点voiddeleteserial (列表头,int i ) ) { //temp现在指向第一个节点list temp=pHead-next; int j; printf ('删除序列号为%d的节点n ',I ); 与删除//单链表不同,双向链表在删除节点时,只需要直接查找要删除的节点的//地址,单链表需要找到被删除节点前面节点的地址for(j=1)。 j i temp!=NULL; j )时间=时间下一步; if(jI|||temp==null ) { printf (找不到要删除的编号%d节点n ',I ); 返回; //要删除的是尾节点if(temp-next==null ) temp-prior-next=NULL; else { temp-prior-next=temp-next; temp-next-prior=temp-prior; (自由) temp; 删除printf('%d”号节点成功! n ',I; (intmain ) void ) { list pHead=NULL; initlist(phead ); 添加节点(phead ); 打印列表(phead-next; //数字为要删除的节点编号deleteserial(phead,0 ); 电子串行(phead,6 ); 打印列表(phead-next; orderandreverseorderprint (头部; addbyserial(phead,6,6 ); 打印列表(phead-next; orderandreverseorderprint (头部; addbyserial(phead,1,0 ); 打印列表(phead-next; orderandreverseorderprint (头部; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。