- 1、本文档共79页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
THANK YOU SUCCESS * * 可编辑 while(score=0){ p=new node ; // p指向新创建的结点 p-num=a ; p-CPPscore=score ; if(head==0){ // 空链表 head=p ; pend=p ; } else { //A点 pend-next=p ; // pend指向p所指向结点的前驱结点 pend=p ; //pend指向链尾,用于在其后插入新创建的结点 } cout请输入学号: ; cina; cout请输入分数(分数为负表示结束输入):; cinscore ; } If(head) pend-next=0 ; // 置链尾标志 return head ; } 6.3.3 链表的输出 链表的输出是从链表头指针开始,逐个结点输出。每输出一个结点,则由该结点的next指针取得下一个结点,直到链表的尾结点。输出链表的print( )函数的形参不能是引用类型的变量,因为要保持“头指针”head的值不变。即不能定义为void print(node *head ); 例6-5 写一个函数输出链表上各个结点的值。 编程实现: void print(node *head ) { if(head==0) { cout 链表为空!\n ; return ; } node *p=head ; cout链表上各个结点的值为:\n; cout学号\t C++成绩\n ; while(p!=0) { cout p-num\tp-CPPscore\n ; p=p-next ; //p指向下一个结点 } } 6.3.4释放链表的结点空间 我们建立的链表是动态链表,组成链表的每个结点的内存单元都是通过new运算符动态申请空间的。因此在对链表操作完毕后,动态申请的空间要释放掉,以便于对内存进行有效的管理。定义一个函数release来完成此操作。该函数的形参是指向结构体类型的指针变量。 例6-6 释放链表的结点空间 编程实现: void release(node *head ) { if(head==0) { cout” 链表为空!\n” ; return ; } node *p ; while( head ) { p=head; head=head-next ; //头指针不断后移,指向链表的各个结点 delete p; //释放p指针指向的结点的内存单元 } cout结点空间释放完毕!; } 6.3.5 主函数的编写 例6-7链表主函数的编写 #includeiostream.h struct node { long int num; float CPPscore; node *next; }; void main( ) { node *create( ); //该函数建立一条有4名学生数据的单向链表 void print(node *head ); //该函数输出链表上各个结点的值 void release(node *head ); //该函数释放链表的结点空间 node *head; head=create( ); print(head); release(head); } 调试与运行结果: 请输入学号:40301 请输入分数(分数为负表示结束输入):85.5 请输入学号:40302 请输入分数(分数为负表示结束输入):78.5 请输入学号:40303 请输入分数(分数为负表示结束输入):80.5 请输入学号:40304 请输入分数(分数为负表示结束输入):83 请输入学号:40305 请输入分数(分数为负表示结束输入):-7 链表上各个结点的值为: 学号 C++成绩 40301 85.5 40302 78.5 40303 80.5 40304 83 结点空间释放完毕! 6.4 链表的复杂操作 链表的复杂操作有三种: ①删除链表中具有指定值的一个结点; ②把创建好的一个结点插入链表; ③建立一条有序链表。这三种操作都要基于查找第n个结点的操作。 40301 85.5 node2 40302 78
文档评论(0)