- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
链表合并第四组谢明慧 流 程 图建立链表b建立链表a合并a,b链表比较成绩得到c链表排序得到d链表链表合并(例10) 已有a,b两个链表,每个链表中的节点包括学号,成绩。要求把两个链表合并,按升序排列。详细步骤构造结构体创建链表建立链表函数建立插入函数建立输出函数步骤一构建结构体#include stdio.h#include malloc.h#define LEN sizeof(struct student)struct student //构造结构体{ long num; //学号 int score; //成绩 struct student *next; //指向下一个指针};链表num101102103score896797……nextNULL详细步骤构造结构体创建链表建立链表函数建立插入函数建立输出函数步骤二创建链表struct student lista,listb; int n,sum=0; //节点总数int main( ){ struct student *creat(void);//链表函数声明 struct student *insert(struct student *,struct student *);//插入函数声明 void print(struct student *);//输出函数声明struct student*ahead,*bhead,*abh;//定义三个节点printf(“input list a:\n”); ahead=creat( ); //调用create创建链表A,返回头地址sum=sum+n;printf(input list b:\n);bhead=creat( ); //调用create创建链表B,返回头地址sum=sum+n;abh=insert(ahead,bhead);//调用insert合并链表 print(abh);//输出合并后的链表 return 0;}详细步骤构造结构体创建链表建立链表函数建立插入函数建立输出函数步骤三建立链表函数struct student *creat(void)//返回指向表头指针 { struct student *head;//头指针 struct student *p1=NULL; //p1保存创建的新节点的地址 struct student *p2=NULL; //p2保存原链表最后一个节点的地址 n=0; //创建前链表的节点总数为0:空链表 p1=p2=(struct student *)malloc(LEN); printf(input number scores of student:\n); printf(if number is 0,stop inputing.\n); scanf(%ld,%d,p1-num,p1-score); //输入数据 head=NULL; //判断头指针是否为空p1=p2=(struct student *)malloc(LEN); 申请 一块内存( 一个结构体占用字节数 的大小)?然后使 指针 p2和p1指向这块内存malloc函数返回的是void * 型指针p1、p2是 struct Student * 型指针 所以 (struct Student *)?强制转换一下类型while(p1-num !=0) //只要学号不为0,就继续录入下一个节点 { n=n+1; //节点总数增加1个 if (n==1) head=p1; //如果节点总数是1,则head指向刚创建的节点p1 else p2-next=p1; //指向上次刚刚开辟的新节点 p2=p1; //把p1的地址给p2保留,然后p1产生新的节点 p1=(struct student *)malloc(LEN); scanf(%ld,%d,p1-num,p1-score); } p2-next=NULL; //单向链表的最后一个节点要指向NULL return(head); //返回头指针}详细步骤构造结构体创建链表建立链表函数建立插入函数建立输出函数步骤四建立插入函数struct student *insert(struct student *ah,struct student *bh) //定义插入函数 { struct student * pa1,* pa2,* pb1,* pb2;//插入函数用到的临时指针 pa2=pa1=ah; pb2=pb1=bh;doah待插入的结点p1数据部分初始化,该结点被头结点head、尾结点p2同时指向.pa1101103105pa2NULLbhpb1100102104pb2NULL{ while((pb1-num
您可能关注的文档
最近下载
- 新标准大学英语(第三版)视听说教程4(智慧版)课件B4U5.pptx VIP
- 2025年高考真题完全解读:数学(全国二卷).docx VIP
- 苏S13-2022 预制混凝土排水检查井工程图集规范 .docx VIP
- 《社会工作实务》教学大纲.docx VIP
- 3.4光的色散(教案)沪科版(2024)物理八年级全一册.doc VIP
- Python数据分析与应用 第2版 配套课件.pptx
- 《C语言程序设计(第5版)》全套教学课件.pptx
- 2012甘肃赛区建模成绩公示.pdf VIP
- 3.3 光的折射(教案)沪科版(2024)物理八年级全一册.doc VIP
- 八重洲FT-7800R中文完整版操作手册(装订版).pdf VIP
文档评论(0)