首页 > 编程知识 正文

c语言链表节点排序,链表归并排序c语言

时间:2023-05-06 16:33:23 阅读:51221 作者:4670

解决文章标题代码中出现的bugs和处理问题

主题

《算法笔记》习题,请访问http://code up.HUST OJ.com/problem.PHP? cid=100000607pid=1

代码# include stdio.h # include stdlib.htypedefstructnode { intid; int grade; 结构节点*下一步; }链接列表,*PLinkList; /*以下为第一个节点的单链接列表*/voidinsert_list(plinklistL,PLinkList node ) while(L-next!=NULL () if ) (L-Next )-id (node-id ) ) break; L=L-next; (; 节点下一步=l -下一步; L-next=node; }voidprint_list(plinklistL ) { L=L-next; while(L!=NULL () printf('%d%dn )、L-id、L-grade ); L=L-next; }/*初始化headnode和其他节点,只创建headnode设置i=0即可*/voidcreate_list(plinklist*p,int i ) { PLinkList plst; *p=(plinklist ) malloc ) sizeof (link list ); (p ) -下一步=空值; /*i首先判断为正在减去*/while(I-- ) plst=(打印列表) malloc (sizeof ) linklist ) ); 扫描(' % d % d ),) plst-id ),) plst-grade ); 上一个下一个=null; insert_list(p,plst ); }/*其中,按原样使用原始链表节点进行排序,并使用原始链表结构*/voidsort_list(plinklistsrc1,PLinkList src2,PLinkList dst ) { PPT src1=src1-next; src2=src2-next; while () (src1!=NULL () src2!=NULL () if(src1-idsrc2-id ) ) { p=src1-next; insert_list(dst,src1); src1=p; } else{ p=src2-next; insert_list(dst,src2); src2=p; }while(src1!=null}{p=src1-next; insert_list(dst,src1); src1=p; }while(src2!=null}{p=src2-next; insert_list(dst,src2); src2=p; }}int main () { int n,m; scanf('%d%d ),n,m ); PLinkList L1、L2、L3; create_list(L1,n ); create_list(L2,m ); create _ list (L3,0; sort_list(L1、L2、L3 ); 打印_列表(L3; 返回0; }遇到的bugs和处理问题节点无法正常插入,程序死循环。 链表的输出有问题,数据不变,发生死循环。 要解决插入和输出函数循环,请忘记将链表指针向后移动,添加可以解决问题。

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