c++链表 建立 输入 输出 删除结点 插入结点 释放链表 的函数
来源:互联网 发布:淘宝易信 编辑:程序博客网 时间:2024/05/22 01:29
Description
编写一个函数creatlink,用来建立一个动态链表。(包含学号和成绩)
编写一个函数printlink,用来输出一个链表。
编写一个函数dellink,用来删除动态链表中一个指定的结点(由实参指定某一学号,表示要删除该学生结点)。
编写一个函数insertlink,用来向动态链表插入一个结点。
编写一个函数freelink,用来释放一个动态链表。
Input
输入多个学生的学号和成绩,建立动态链表,以0 0 结束
输入学号,删除链表中的对应结点
插入两个链表结点
Output
输出的链表
#include<iostream> #include<iomanip> using namespace std;/********************************************************/struct student { long num; float score; student *next; };/********************************************************/ student *creatlink(void)//建立链表 { student *st=new student,*pend,*head;//申请内存空间 cin>>st->num>>st->score;//输入学生信息 head=NULL; while(st->num!=0)//当输入0 0时结束 { if(head==NULL) head=st;//head起个头 else pend->next=st;//指向下一个结点的地址 pend=st; st=new student;//重新申请内存地址 cin>>st->num>>st->score; } pend->next=NULL; delete st;//把多申请的那个释放 return head;//返回首地址,千万别改}/********************************************************/ void printlink(student *head)//链表输出 { while(head!=NULL) { cout<<head->num<<" "<<head->score<<endl; head=head->next; } }/********************************************************/ student *dellink(student *head,long del)//删除 { student *p1,*p2=head; while(p2!=NULL) { if(del==p2->num) { p1->next=p2->next;//上一个的next指向被删除结点的下一个地址//也就是上一个的next的值换成下一个next的值 break; } else { p1=p2; p2=p2->next; } } return head; }/********************************************************/ student *insertlink(student *head,student *std)//插入 { student *p2=head,*p1,*st=new student;//一定要申请新的内存地址 st->num=std->num;//把值赋给st就可以了,别赋地址 st->score=std->score; st->next=std->next; while(p2->next!=NULL) { if(p2->num<st->num&&st->num<p2->next->num)//简单的排一下序 { p1=p2->next; p2->next=st; st->next=p1; return head;//插进去了就退出吧 } else p2=p2->next; } if(p2->next==NULL)//当在最后插入结点时 { p2->next=st; st->next=NULL;//别忘了 } return head; }/********************************************************/ void freelink(student *head)//释放链表{ student *p1=head,*p2; while(p1!=NULL)//排着释放 { p2=p1->next; delete p1; p1=p2; } }/********************************************************/ int main() { student *creatlink(void); student *dellink(student *,long); student *insertlink(student *,student *); void printlink(student *); void freelink(student *); student *head,stu; long del_num; head=creatlink(); cin>>del_num; head=dellink(head,del_num); cin>>stu.num>>stu.score; head=insertlink(head,&stu); cin>>stu.num>>stu.score; head=insertlink(head,&stu); cout<<setiosflags(ios::fixed); cout<<setprecision(2); printlink(head); freelink(head); return 0; }/*Sample Input1001 1001002 951005 901008 760 010051006 981009 99Sample Output1001 100.001002 95.001006 98.001008 76.001009 99.00*/
0 0
- c++链表 建立 输入 输出 删除结点 插入结点 释放链表 的函数
- 单链表的建立、求长、插入、删除、输出和释放 (带头结点)
- 学习笔记——C语言实现单链表的基本操作:创建、输出、插入结点、删除结点、逆序链表
- 学习笔记——C语言实现单链表的基本操作:创建、输出、插入结点、删除结点、逆序链表
- 双链表的建立、求长、定位、插入、删除、输出和释放(带头结点且成环状)
- 链表C 链表的结点插入
- 链表建立,插入,删除,输出,释放
- 链表建立,插入,删除,释放,输出
- 二叉排序树的建立、结点插入及删除
- java建立双向链表,插入结点,删除节点
- 二叉搜索树的插入建立与结点删除
- 关于链表的新建,删除结点,插入结点的代码
- 输入一个链表的头结点,从尾到头反过来输出每个结点的值
- 输入一个链表的头结点,从尾到头反过来输出每个结点的值
- 输入一个链表的头结点,从尾到头反过来输出每个结点的值
- 输入一个链表的头结点,从尾到头反过来输出每个结点的值
- 输入一个链表的头结点,从尾到头反过来输出每个结点的值
- 输入一个链表的头结点,从尾到头反过来输出每个结点的值。
- HDU1878欧拉回路
- hdu 1680 Cheesy Chess
- hive 桶相关特性分析
- Spring-IOC+DI-启动过程
- 挨踢之路之学习流程篇(一)
- c++链表 建立 输入 输出 删除结点 插入结点 释放链表 的函数
- Interview----First single charactor
- Mootools教程
- 初识Redis——邂逅
- 分布式计算、并行计算及集群、网格、云计算的区别
- Java 学习文章汇总
- Java第一周作业
- 编写计算“两个整数的最大公约数”程序
- 反射学习--对接收数组参数的成员方法进行反射