结构体和链表编程题目.docx_第1页
结构体和链表编程题目.docx_第2页
结构体和链表编程题目.docx_第3页
结构体和链表编程题目.docx_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四阶段(结构体与链表)1. 对候选人得票的统计程序。设有三个候选人,每次输入一个得票的候选人的名字,要求最后输出各候选人得票结果。本题应该先定义一个结构体,结构体中包含姓名和票数两个变量。2. 建立一个描述个人信息的结构体,包括ID号,姓名,性别,年龄等信息,定义该结构体数组并初始化,将按年龄分成三个部分(小于18岁,1860岁,大于60岁),每一部分放在一起打印。3. 建立一个描述个人信息的结构体,包括ID号,姓名,性别,年龄等信息,定义该结构体数组并初始化,将按年龄分成三个部分(小于18岁,1860岁,大于60岁),然后定义一个该结构体的二维数组,二维数组的每一行按年龄分别存放同一部分的个人信息。4. 定义一个关于学生成绩的结构体,结构体中包含学生学号,姓名,英语成绩,数学成绩,总分等信息,你可以定义该结构体的数组并初始化,总分可以通过程序获得,然后按总分为第一关键字,英语成绩为第二关键字将学生成绩信息从高到低排列并存到原数组中。(尽量不要定义新的数组)。5. 在屏幕上模拟显示一个数字式时钟(不要求1秒钟为频率)。结构体中应当定义三个int变量,hour,minute,second。如何让second加1呢?这个可以使用延时程序,如: Delay() Int I,j;For(i=0;i1000;i+)For(j=0;j1000;j+)这个延时程序不一定是1秒,只要模拟一下数字时钟就可以了。同时,你可能要用到形式如printf(“%dr”)的打印,”r”表示打印时又重新回到本行开头处打印,因为你每更新一次数据时都需要打印,打印的位置没有变化才会像一个电子时钟。6. 设计一结构体,包括ID号(int型),名称(字符串),请定义该结构体的数组,并给这些数组赋初值,根据ID号将数组进行排序,把ID从小到大排序,不能再定义新的数组。比如:数组的第一个元素的ID号放ID号最小的值,并将这个ID号对应的名称也放在第一个元素的名称中。7. 给定单链表头结点,删除链表中倒数第K个结点。请实现函数struct node* del(struct node *head,int k);返回新链表的头结点。8. 请建立一单链表,并将该单链表形成环形链表。即将单链表的尾结点指向单链表的头结点。9. 请动态建立一个双向链表。10. 假如双向链表的每个结点放一个整数,并且头结点到尾结点中的整数是从小到大排列的,请向链表中按顺序插入一结点。11. 已知两个整数集合A和B,它们的元素值分别放在两个循环链表中。请设计一种算法求这两个集合的并集,请将并集放在链表中,并从函数中返回链表的头结点。12. 一单链表中存在环,请找出链表上环的起点,例如有如下链表:sachoug 则c,a,s是一个循环链表,你需要找出起点结点C。13. 有两个单链表,判断这两个链表是否相交,如果相交,则打印出来相交的首结点,如没相交则进行相应的提醒。(链表相交是指两个链表中有共同的结点)shasachuog例如: H2H1H1为:g,u,o,h,c,a,sH2为:s,h,a,c,a,s则它们相交的首结点是c 结点,你应该找到这个结点,并将相交的结点全部打印(结点c及c后面的结点全是他们的相交结点)。14. 已知单链表中的数据含有三类字符(即:字母字符,数字字符和其他字符),请写一函数,构造三个环形链表,使每个环形链表中只含同一类字符,且得用原来的结点空间作为这3个链表的结点空间,头结点可另辟空间15. 设单链表中存放n个字符(每个结点一个字符),请写一函数来判断该字符串是否中心对称。例如abccba即为中心对称。16. 定义一个关于学生成绩的结构体,结构体中包含学生学号,姓名,英语成绩,数学成绩,平均分,总分等信息。你可以定义该结构体的数组,先对数组进行初始化,初始化的时候不要计算平均分和总分,你被要求写三个函数,一个函数计算平均分和总分,一个函数求出所有英语或数学成绩不合格的学生,最后一个函数根据总分进行排序,在主函数中,这三个函数按在顺序执行(先算平均分和总分,再求不成绩不合格的学生,最后排序),每个函数执行完之后,都需要打印函数执行后的结果。17. 定义一个关于学生成绩的结构体,结构体中包含学生学号,姓名,英语成绩,数学成绩,平均分,总分等信息。然后创建一个静态链表,这题中你被要求写四个函数,一个函数计算平均分和总分,一个函数计算所有学生英语或数学成绩的平均分,并打印所有低于平均分的学生信息,这个函数需要通过从主函数中传递形参来决定计算英语平均成绩还是数学平均成绩,例如:count(struct stu *s,int n),我们可以定义当n=0时,计算英语平均成绩,当n=1时,计算数学平均成绩。一个函数查找所有英语成绩为某个值的学生,并打印学生信息(没有该值时,应该提醒没有该成绩的学生)。最后一个函数根据总分进行排序。同样,第个函数执行完之后,都需要打印函数执行后的结果。18.设有个人围坐一圈并顺时针方向从1到编号,从第个人开始进行1到报数,报数到第个人时,此人出圈,再从他的下一个重新开始1到的报数,如此进行下去直到所有人都出圈为止。现要打印出圈次序。请用环形链表实现。19假如一链表中的每个结点都放了一个只含小写字母的字符串,请写一个函数,函数功能是按字符串的大小从大到小排序(字母ASCII值越大,则字母越大)。函数定义为:struct strnode *sort(struct strnode *head) 。例如:各结点分别放了my,name,is,deng,shui,fa。排序后应该为shui,name,my,is,fa,deng。 20.(图书管理系统)我们对于图书馆以后会买多少书是未知的,所以如果定义数组就有可能在将来的某一天,数组的大小不够用,本题需要用动态链表做。自己定义关于图书的结构体,该结构体包括:书号,书名,书类别(类别如通信,英语,计算机等),馆藏量,剩余量,本题需要的主要函数如下:初始化:程序运行之初,应该创建一个包含一定数量结点的链表。添加:当有新书进来时,需要创建一个结点,将新书信息存到这个结点当中,并将这个结点放在链表末尾。删除:删除指点信息的书目。排序:根据指定的关键字进行排序。查找:根据指定的要求进行查找。借书:将所借书的剩余量减1。还书:将所还的书的剩余量加1。整个程序的菜单如下:0.退出 0.返回上一级菜单(意思就是不想添加了,所以只有返回)1.添加1.添加图书 0.返回上一级菜单(意思同上) 2删除 1.根据书号删除(输入书号,如果该书号的书就删除,否则提示没有该书) 2.根据书名删除(输入书名,如果该书号的书就删除,否则提示没有该书) 0.返回上一级菜单(意思同上) 1.根据书号排序3.排序 2.根据藏书量排序 0.返回上一级菜单(意思同上) 4.查找 1.根据书名查找 2.根据书号查找 0.返回上一级

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论