已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/*-时间:2011年9月28日文件功能:实现了动态建立一个学生信息的链表包括链表的创建、插入、删除、和打印输出学生信息包括姓名和分数本链表是带有头结点的,头结点的内容为空内容-*/*-包含头文件-*/#include#include#include#include/*-结构体定义部分-*/struct Nodechar name10;int score;struct Node *next;typedef struct Node ListNode;/*-函数声明部分-*/*-函数实现部分-*/*-创建链表-*/*在链表的末端插入新的节点,建立链表*/ListNode *CreateList(int n)ListNode *head;/指向头结点指针ListNode *p,*pre;int i;head=(ListNode *)malloc(sizeof(ListNode);/为头节点分配内存空间head-next=NULL;/将头结点的指针域清空pre=head;/先将头结点首地址赋给中间变量prefor(i=1;iname);/输入姓名printf(input score of the %d student:,i);scanf(%d,&p-score);/输入分数pre-next=p;/将p指向新结点插入链表也就是头结点指针域指向/下个结点/第一个结点就是p指向的,因为头结点内容为空pre=p;/这个起着指向下一个结点的作用p-next=NULL;/最后将最后一个结点的指针域清空了return head;/返回这个链表的首地址/*-输出链表-*/void PrintList(ListNode *h)ListNode *p;p=h-next;while(p)printf(%s,%d,p-name,p-score);p=p-next;printf(n);/*-插入链表结点-*/*-函数名称:InsertList(ListNode *h,int i,char name,int e,int n)函数功能:插入链表结点入口参数: h: 头结点地址 i:插入到第几个结点 name:插入结点的姓名 e:插入结点的分数 n:链表中结点的个数除下头结点外的个数出口参数:-*/void InsertList(ListNode *h,int i,char name,int e,int n)ListNode *q,*p;/先定义2个指向一个结点的指针int j;if(in+1)printf(Error! Please input again.n);elsej=0;p=h;/将指针p指向要链表的头结点while(jnext;j+;q=(ListNode *)malloc(sizeof(ListNode);/*为要插入的结点分配内存空间*/-赋值操作-strcpy(q-name,name); /将名字拷到要插入的节点内q-score=e; /将要插入的节点中分数赋值/调整指针域q-next = p-next; /*这个是将新插入的结点指针域指向上一个结点指针域指向的结点地址即为p-next*/p-next=q;/*将要插入结点位置前面的结点指针域指向现在插入的结点首地址*/*-函数名称:DeleteList(ListNode *h, int i, int n)函数功能:删除链表结点入口参数: h: 头结点地址 i:要删除的结点所在位置n:链表中结点的个数除下头结点外的个数出口参数:-*/void DeleteList(ListNode *h, int i, int n)ListNode *p,*q;/首先定义2个指向结点型结构体的指针int j;char name10;int score;if(in)/如果位置超出了1和n的范围的话则打印出错误信息printf(Error! Please input again.n);else/没有超出除头结点外的1到n 的范围的话那么执行删除操作j=0;p=h;/将指针指向链表的头结点首地址while(jnext;j+;q=p-next; /*q指向要删除的位置之前的那个结点指针域指向的地址q指向的结点就是要删除的结点*/p-next=q-next;/*这个就是将要删除的结点的前面那个结点的指针域指向要删除的结点指针域中存放的下个结点的首地址从而实现了删除第i个结点的作用*/strcpy(name,q-name);score=q-score;free(q);/释放q指向的结点printf(name=%s,score=%dn,name,score);/*-主函数-*/void main()ListNode *h;/h指向结构体NODEint i = 1, n, score;char name 10;while ( i )/*输入提示信息*/printf(1-建立新的链表n);printf(2-添加元素n);printf(3-删除元素n);printf(4-输出当前表中的元素n);printf(0-退出n);scanf(%d,&i);switch(i)case 1:printf(n=); /*输入创建链表结点的个数*/scanf(%d,&n);h=CreateList(n);/*创建链表*/printf(list elements is : n);PrintList(h);break;case 2:printf(input the position. of insert element:);scanf(%d,&i);printf(input name of the student:);scanf(%s,name);printf(input score of the student:);scanf(%d,&score);InsertList(h,i,name,score,n);printf(list elements is:n);PrintList(h);break;case 3:printf(input the position of delete element:);scanf(%d,&i);DeleteList(h,i,name,score,n);printf(list elements
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 肇庆市重点中学2026届高二上数学期末统考模拟试题含解析
- 山东省青岛市崂山区第二中学2026届数学高二上期末经典试题含解析
- 河南信息统计职业学院《风险投资》2024-2025学年第一学期期末试卷
- 2025-2026学年新疆伊犁哈萨克自治州奎屯市第一高级中学高二上生物期末统考模拟试题含解析
- 2023年盐城辅警招聘考试真题及参考答案详解一套
- 2024年三明辅警招聘考试真题含答案详解(模拟题)
- 福州科技职业技术学院《供应链管理(双语)》2024-2025学年第一学期期末试卷
- 2025年湖北省荆州市公安县数学高二上期末检测试题含解析
- 安徽省庐巢六校联盟2023年高二上物理期末监测模拟试题含解析
- 山东第一医科大学《建筑快速设计训练Ⅱ》2024-2025学年第一学期期末试卷
- 自动售货机合作协议书
- 《冬季养肺秘籍》课件
- 水电设备故障诊断-深度研究
- 2025年中建壹品物业运营限公司招聘管理单位笔试遴选500模拟题附带答案详解
- QC提高电气线管预留预埋施工质量
- 【MOOC】光学发展与人类文明-华南师范大学 中国大学慕课MOOC答案
- 电话销售公司员工入职培训
- 铝业公司铝锭购销合同2024年度版
- LNG气化站工艺迁移及安装工程施工组织设计
- 智能硬件产品设计与开发流程
- 水循环(精彩动画演示有解说)
评论
0/150
提交评论