ImageVerifierCode 换一换
格式:DOCX , 页数:33 ,大小:23.50KB ,
资源ID:8859557      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8859557.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构.docx

1、数据结构一、试题查看标题:约瑟夫环时 限:500 ms内存限制:2000 K总时限:3000 ms描述:约瑟夫环编号为1,2,3,n的n个人按顺时针方向围坐一圈。任选一个正整数作为报数上限m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止。设计程序输出出列顺序。输入:人数n 报数上限m人员记录1 (格式为:姓名 学号 性别 年龄 班级 健康状况)人员记录2人员记录n输出:第1次报数出列的人员记录第2次报数出列的人员记录第n次报数出列的人员记录输入样例:5 3安弥邵 10000001 女

2、28 计43 一般宰觅 10000002 男 23 计79 健康顾健 10000003 男 27 计29 一般宓顽芳 10000004 女 20 计17 健康能纸垄 10000005 男 18 计11 健康输出样例:顾健 10000003 男 27 计29 一般 安弥邵 10000001 女 28 计43 一般 能纸垄 10000005 男 18 计11 健康 宰觅 10000002 男 23 计79 健康 宓顽芳 10000004 女 20 计17 健康提示:循环表来源:返回#include#include struct Lnode char *name; char *number; cha

3、r *sex; int age; char *classnum; char *health; int num; struct Lnode * next;*L;typedef struct Lnode Linklist;void Creat(Linklist* q,int n);void Ope(Linklist* p,int m);int main() int n,m; scanf(%d%d,&n,&m); L=(Linklist*)malloc(sizeof(Linklist); Creat(L,n); Ope(L,m); return 0;void Creat( Linklist* L,i

4、nt n) int i=1; Linklist *p,*q; p=L; p-name=(char*)malloc(10*sizeof(char); p-number=(char*)malloc(10*sizeof(char); p-sex=(char*)malloc(4*sizeof(char); p-classnum=(char*)malloc(10*sizeof(char); p-health=(char*)malloc(6*sizeof(char); scanf(%s%s%s%d%s%s,p-name,p-number,p-sex,&p-age,p-classnum,p-health);

5、 p-num=i; p-next=NULL; for(i=1;iname=(char*)malloc(10*sizeof(char); q-number=(char*)malloc(10*sizeof(char); q-sex=(char*)malloc(4*sizeof(char); q-classnum=(char*)malloc(10*sizeof(char); q-health=(char*)malloc(6*sizeof(char); scanf(%s%s%s%d%s%s,q-name,q-number,q-sex,&q-age,q-classnum,q-health); q-num

6、=i+1; p-next=q; p=q; p-next=L;void Ope(Linklist* L,int m) int i=1; Linklist *pre,*cur; cur=pre=L; while(cur-next!=cur) for(;inext; pre-next=cur-next; i=1; printf(%s %s %s %d %s %sn,cur-name,cur-number,cur-sex,cur-age,cur-classnum,cur-health); free(cur); cur=pre-next; printf(%s %s %s %d %s %sn,cur-na

7、me,cur-number,cur-sex,cur-age,cur-classnum,cur-health); free(cur); #include#include#include / malloc()等#include / INT_MAX等#include / EOF(=Z或F6),NULL#include / atoi()#include / eof()#include / floor(),ceil(),abs()#include / exit()#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASI

8、BLE -1typedef struct char name20; char num10; char sex3; int age; char clas10; char health20; struct node *next;ElemType;typedef struct LNode ElemType data; struct LNode *next;LNode,*LinkList;void Run(LinkList L,int m) LinkList p=L,q ; int j; if(m=1) for(q=p;q-next!=p;q=q-next) printf(%s %s %s %d %s

9、 %sn,q-data.name,q-data.num,q-data.sex,q-data.age,q-data.clas,q-data.health); printf(%s %s %s %d %s %sn,q-data.name,q-data.num,q-data.sex,q-data.age,q-data.clas,q-data.health); else while(p-next!=p) for(j=1;jnext; printf(%s %s %s %d %s %sn,p-data.name,p-data.num,p-data.sex,p-data.age,p-data.clas,p-d

10、ata.health); q-next = p-next; free(p); p = q-next; printf(%s %s %s %d %s %sn,p-data.name,p-data.num,p-data.sex,p-data.age,p-data.clas,p-data.health); void GetList(LinkList &L,int n) LinkList p,q; int i; L=(LinkList)malloc(sizeof(LNode); scanf(%s%s%s%d%s%s,L-data.name,L-data.num,L-data.sex,&(L-data.a

11、ge),L-data.clas,L-data.health); q = L; for(i=1;idata.name,p-data.num,p-data.sex,&(p-data.age),p-data.clas,p-data.health); q-next = p; q = p; q-next = L;int main() int i,j; scanf(%d%d,&j,&i); LinkList L; GetList(L,j); Run(L,i); return 0;二、试题查看标题:学生信息管理时 限:1000 ms内存限制:20000 K总时限:3000 ms描述:用链式存储结构实现对一个

12、班级学生信息管理。设计程序求出每个人的平均成绩并按平均成绩由高到底排序后输出学生记录。输入:人数n人员记录1 (格式为: 学号 姓名 成绩1 成绩2 成绩3)人员记录2输出:人员记录x 1人员记录y 2人员记录z n输入样例:31 孙俪莉 76 78 89 2 章子怡 72 56 67 3 刘德华 56 84 90输出样例:1 孙俪莉 76 78 89 81.00 13 刘德华 56 84 90 76.67 22 章子怡 72 56 67 65.00 3提示:来源:返回 #include#include#includetypedef int ElemType;typedef struct St

13、udent char num30; char name10; float score1; float score2; float score3; float average; struct Student *next; student,*stu;void CreatCList(stu L,ElemType n) stu p1; while(n 0) p1 = (stu)malloc(sizeof(student); scanf(%s,p1-num); scanf(%s,p1-name); scanf(%f,&p1-score1); scanf(%f,&p1-score2); scanf(%f,

14、&p1-score3); L-next = p1; L = p1; n -; L - next = NULL;void Average(stu L) stu h; h = L-next; while(h) h-average = (h-score1)+(h-score2)+(h-score3)/3; h = h-next; void List_Sort(stu L) stu p,q,r,s,l; l = L; p = L-next; while(p) r = p; q = p-next; while(q) if(r-average average) r = q; q = q-next; s =

15、 p; if(s-average=r-average & s-num=r-num) p = p-next; l-next = r; l = r; else while(s-next-num != r-num) s = s-next; s-next = r-next; l-next = r; l = r; l-next = NULL;void Traverse(stu L,ElemType n) ElemType i = 0; stu p; p = L-next; while(p) i +; if(i=n & n10) printf(%s %s %.2f %.2f %.2f %.2f %dn,p

16、-num,p-name,p-score1,p-score2,p-score3,p-average,i); else printf(%s %s %.2f %.2f %.2f %.2f %dn,p-num,p-name,p-score1,p-score2,p-score3,p-average,i); p = p-next; int main() ElemType n; stu L; L = (stu)malloc(sizeof(student); L-next = NULL; scanf(%d,&n); CreatCList(L,n); Average(L); List_Sort(L); Trav

17、erse(L,n); return 0;三、试题查看标题:顺序表上的基本操作实现时 限:1000 ms内存限制:10000 K总时限:3000 ms描述:在顺序存储结构实现基本操作:初始化、创建、插入、删除、查找、遍历、逆置、合并运算。输入:请输入线性表La的长度:na1 a2 a3 .an(数值有序,为降序)请输入要插入到线性表La中的数字x和插入的位置i:x i请输入要删除数字的位置:i请输入要查找的数字:x请输入线性表长度:mb1 b2.bm(数值有序,为升序)输出:创建好的线性表La=a1 a2.an插入一个数字后的线性表a1 a2.an+1删除一个数字后的线性表a1 a2.an查找一

18、个输入的数字后如果找到,输出该数字的位置i,如果没有找到,输出没有找到x的信息。逆置a1 a2.an后的线性表an an-1.a1合并两个线性表后的线性表输入样例:请输入线性表La的长度:5请输入线性表La中的元素:14 11 10 9 5请输入要插入到线性表La中的数字x和插入的位置i:8 4线性表La=14 11 10 8 9 5请输入要删除的数字的位置:4线性表La=14 11 10 9 5请输入要查找的数字:10找到,10在第3个位置逆置后的线性表La=5 9 10 11 14请输入线性表Lb的长度:4请输入线性表Lb中的元素:1 3 6 9合并La和Lb后的线性表为:1 3 5 6

19、9 9 10 11 14输出样例:提示:来源: #include#include#include / malloc()等#include / INT_MAX等#include / EOF(=Z或F6),NULL#include / atoi()#include / eof()#include / floor(),ceil(),abs()#include / exit()#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1typedef int Status; / Status是函数的类型,其值

20、是函数结果状态代码,如OK等typedef int ElemType;#define LIST_INIT_SIZE 5 / 线性表存储空间的初始分配量#define LISTINCREMENT 2 / 线性表存储空间的分配增量struct SqList ElemType *elem; / 存储空间基址 int length; / 当前长度 int listsize; / 当前分配的存储容量(以sizeof(ElemType)为单位);Status InitList(SqList &L) / 算法2.3 / 操作结果:构造一个空的顺序线性表 L.elem=(ElemType*)malloc(LI

21、ST_INIT_SIZE*sizeof(ElemType); if(!L.elem) exit(OVERFLOW); / 存储分配失败 L.length=0; / 空表长度为0 L.listsize=LIST_INIT_SIZE; / 初始存储容量 return OK;Status DestroyList(SqList &L) / 初始条件:顺序线性表L已存在。操作结果:销毁顺序线性表L free(L.elem); L.elem=NULL; L.length=0; L.listsize=0; return OK; int ListLength(SqList L) / 初始条件:顺序线性表L已存

22、在。操作结果:返回L中数据元素个数 return L.length;Status GetElem(SqList L,int i,ElemType &e) / 初始条件:顺序线性表L已存在,1iListLength(L) / 操作结果:用e返回L中第i个数据元素的值 if(iL.length) exit(ERROR); e=*(L.elem+i-1); return OK;int LocateElem(SqList L,ElemType e,Status(*equal)(ElemType,ElemType) / 初始条件:顺序线性表L已存在,compare()是数据元素判定函数(满足为1,否则为

23、0) / 操作结果:返回L中第1个与e满足关系compare()的数据元素的位序。 / 若这样的数据元素不存在,则返回值为0。算法2.6 ElemType *p; int i=1; / i的初值为第1个元素的位序 p=L.elem; / p的初值为第1个元素的存储位置 while(i=L.length&!equal(*p+,e) +i; if(i=L.length) return i; else return 0;Status ListInsert(SqList &L,int i,ElemType e) / 算法2.4 / 初始条件:顺序线性表L已存在,1iListLength(L)+1 /

24、操作结果:在L中第i个位置之前插入新的数据元素e,L的长度加1 ElemType *newbase,*q,*p; if(iL.length+1) / i值不合法 return ERROR; if(L.length=L.listsize) / 当前存储空间已满,增加分配 if(!(newbase=(ElemType *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType) exit(OVERFLOW); / 存储分配失败 L.elem=newbase; / 新基址 L.listsize+=LISTINCREMENT; / 增加存储容

25、量 q=L.elem+i-1; / q为插入位置 for(p=L.elem+L.length-1;p=q;-p) / 插入位置及之后的元素右移 *(p+1)=*p; *q=e; / 插入e +L.length; / 表长增1 return OK;Status ListDelete(SqList &L,int i,ElemType &e) / 算法2.5 / 初始条件:顺序线性表L已存在,1iListLength(L) / 操作结果:删除L的第i个数据元素,并用e返回其值,L的长度减1 ElemType *p,*q; if(iL.length) / i值不合法 return ERROR; p=L.elem+i-1; / p为被删除元素的位置 e=*p; / 被删除元素的值赋给e q=L.elem+L.length-1; / 表尾元素的位置 for(+p;p=1&j=Lb_len) GetElem(La,i,ai); GetElem(Lb,j,bj); if(ai=1) GetElem(La,i-,ai); ListInsert(Lc,+k,ai); while(j=Lb_len) / 表Lb非空且表La空 GetElem(Lb,j+,bj); ListInsert(Lc,+k,bj); Status equal(ElemType c1,ElemType

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1