免费预览已结束,剩余5页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精选文库/*-时间: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 i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 草业种子代理合同范本
- 装修公司框架协议合同
- 解决纠纷调解合同范本
- 订婚酒店合同范本模板
- 设备搬迁安装合同范本
- 豪华仓库买卖合同范本
- 购买合同欠款协议样本
- 购买水泥门楼合同范本
- 资产转让合同范本模板
- 2025年银行招聘之银行招聘综合知识每日一练试卷B卷含答案
- 天津统考乐理题库及答案
- mcn公司签约合同范本
- 2025贵州铁路投资集团有限责任公司招聘情况笔试备考试题及答案
- 2025团校入团考试试卷题库(含答案)
- 排污责任协议书范本
- 2025年协作机器人产业发展蓝皮书-高工咨询
- 2025年浙江省选调生考试综合知识试卷
- 术中用药安全
- DB32∕T 4766-2024 疾控机构卫生应急物资储备目录与管理规范
- 职业调研课件
- 心理健康教育班队课设计与实施
评论
0/150
提交评论