首页 > 编程知识 正文

链表如何交换两个节点,将一个链表通过交换节点位置

时间:2023-05-04 06:34:09 阅读:51275 作者:3825

目录链表开头节点语义链表初始化1、气泡排序2、插入排序

链表中第一个节点的含义

头节点没有实际数据,不是必须的,主要是为了操作的统一和方便而设立的

有了头节点,在第一个数据节点之前的插入、删除和修改操作将与对其他节点的操作相统一

基于第一个节点的链表具有以下排序

链表typedef struct a{int num; 结构a*下一步; }s,*List; 列表头=null; 语音气泡(列表; 语音插入(列表; main () intb [ 10 ]={ 9,14,5,3,4,2,8,10,11,6 }; //默认的10个元素//头节点初始化列表时间=(列表) malloc(sizeof ) s ); temp-num=0; temp-next=空值; head=temp; int i; for(I=0; i10; I ) lista=(list ) malloc ) sizeof ) s ); a-num=b[i]; a-next=NULL; 时间下一步=a; temp=temp-next; (一、气泡排序比较相邻节点,选择未排序元素中的最大数,放在末尾

语音气泡(listhead ) { List pre,cur,next,end; //pre前的cur前的项目控制next后的项目end循环数(优化鼓泡) end=NULL; wile (下一步!=end(//3判断是否到达了初始化3个指针的结束位置; for(pre=head,cur=pre-next,next=cur-next ),将三个指针放在一起; 下一步!=结束; pre=pre-next,cur=cur-next,next=next-next () if(cur-numnext-num ) /从小到大) {pre-next=next; cur-next=next-next; 下一个-下一个=cur; //此时,next变为前一项,cur变为后一项,next curList temp=cur; cur=next; next=temp; (//循环结束的最后一个项目已经排列了end (鼓泡原理) end=cur; }二、插入排序需要用两个指针遍历链表。 一个指针用于标记要插入的节点,另一个指针用于定位插入位置。 (内环) )。

语音插入(listhead ) {List p1,p2,temp,prep1,prep2; for (P1=头下一步,prep1=头下一步; p1!=NULL; p1=p1-next,prep1=prep1-next ) {temp=p1; //保存要插入的节点for (p2=头下一步,prep2=头; p2!=p1; p2=p2-next,prep2=prep2-next(if ) P2-numP1-num ) {p1=p1-next; prep1-next=temp-next; 预2 -下一步=temp; //插入对应位置temp-next=p2; 布雷克; }}}}

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