大连理工大学《数据结构》作业2016-参考答案.pdf
- 文档编号:3212775
- 上传时间:2022-11-20
- 格式:PDF
- 页数:26
- 大小:450.09KB
大连理工大学《数据结构》作业2016-参考答案.pdf
《大连理工大学《数据结构》作业2016-参考答案.pdf》由会员分享,可在线阅读,更多相关《大连理工大学《数据结构》作业2016-参考答案.pdf(26页珍藏版)》请在冰豆网上搜索。
数据结构作业参考答案作业作业1.线性表线性表编程作业:
1将顺序表逆置,要求用最少的附加空间。
参考答案参考答案#include#include#include#defineLIST_INIT_SIZE100#defineLISTINCREMENT10#defineTRUE1#defineFALSE0#defineOK1#defineERROR0#defineINFEASIBLE-1#defineOVERFLOW-2typedefintStatus;typedefintElemType;typedefstructElemType*elem;intlength;intlistsize;SqList;/创建空顺序表创建空顺序表StatusInitList_Sq(SqList&L)L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType);if(!
L.elem)exit(OVERFLOW);L.length=0;L.listsize=LIST_INIT_SIZE;returnOK;/顺序表在第顺序表在第i个元素之前插入个元素之前插入eStatussxbcr(SqList&L,inti,ElemTypee)数据结构作业参考答案ElemType*p,*q;if(iL.length+1)return(ERROR);elseq=&(L.elemi-1);for(p=&(L.elemL.length-1);p=q;-p)*(p+1)=*p;*q=e;+L.length;return(OK);/顺序表显示顺序表显示voidxsList(SqListL)inti=L.length,k;for(k=0;ki;k+)printf(%d,L.elemk);printf(n);/顺序表逆置顺序表逆置voidnizhi(SqList&L)inti=0,j=L.length-1;ElemTypetemp;for(;i10-20-30-40);(3)InsertList():
在有序单链表中插入元素x;(4)ReverseList():
单链表就地逆置;(5)DelList():
在有序单链表中删除所有值大于mink且小于maxk的元素。
选作:
使用文本菜单完成功能选择及执行。
参考答案:
参考答案:
#include#include数据结构作业参考答案#include#defineTRUE1#defineFALSE0#defineOK1#defineERROR0#defineINFEASIBLE-1#defineOVERFLOW-2typedefintStatus;typedefintElemType;typedefstructnodeElemTypedata;structnode*link;Lnode,*LinkList;/头插法建立单链表头插法建立单链表voidCreate_L1(LinkList&L,intn)LinkListp;inti;L=(LinkList)malloc(sizeof(Lnode);L-link=NULL;for(i=n;i0;-i)p=(LinkList)malloc(sizeof(Lnode);scanf(%d,&p-data);p-link=L-link;L-link=p;/尾插法建立单链表尾插法建立单链表voidCreate_L2(LinkList&L,intn)LinkLists,p;inti;L=(LinkList)malloc(sizeof(Lnode);L-data=0;L-link=NULL;数据结构作业参考答案p=L;for(i=1;idata);s-link=NULL;p-link=s;p=s;/查找是否存在结点查找是否存在结点eLinkListdlbcz(LinkListL,ElemTypee)LinkListp=L-link;while(p!
=NULL&p-data!
=e)p=p-link;return(p);/在第在第i个元素之前插入结点个元素之前插入结点eStatusListInsert_L(LinkListL,inti,ElemTypee)LinkListp=L,s;intj=0;while(p&jlink;+j;if(!
p|ji-1)returnERROR;s=(LinkList)malloc(sizeof(Lnode);s-data=e;s-link=p-link;p-link=s;returnOK;/删除第删除第i个结点个结点StatusListDelete_L(LinkListL,inti,ElemType&e)LinkListp=L,q;intj=0;数据结构作业参考答案while(p-link&jlink;+j;if(!
(p-link)|ji-1)returnERROR;q=p-link;p-link=q-link;e=q-data;free(q);returnOK;/求第求第i个元素值个元素值StatusGetElem_L(LinkListL,inti,ElemType&e)intj=1;LinkListp=L-link;while(p&jlink;j+;if(!
p|ji)returnERROR;e=p-data;returnOK;/显示单链表中元素显示单链表中元素voidxsList(LinkListL)LinkListp=L-link;while(p)printf(%d,p-data);p=p-link;/删除大于删除大于mink且小于且小于maxk的元素的元素voidDelList(LinkList&L,ElemTypemink,ElemTypemaxk)LinkListp=L,q;while(p-link&p-link-datalink;数据结构作业参考答案q=p;while(q&q-datalink;p-link=q;/就地升序排序就地升序排序voidsh_sort(LinkList&L)LinkListp=L-link,pre=L,q=L-link-link,u;p-link=NULL;while(q)p=L-link;pre=L;while(p&p-datadata)pre=p;p=p-link;u=q-link;pre-link=q;q-link=p;q=u;/就地逆置就地逆置voidnizhi(LinkList&L)LinkListp=L-link,q=L-link-link,u;p-link=NULL;while(q)u=q-link;q-link=L-link;L-link=q;q=u;数据结构作业参考答案/有序表插入有序表插入voidyxcharu(LinkList&L,ElemTypee)LinkListpre,p,s;pre=L;p=L-link;while(p&p-datalink;s=(LinkList)malloc(sizeof(Lnode);s-data=e;s-link=p;pre-link=s;main()LinkListL;intn,i,mink,maxk;ElemTypee;charchoice=0;while(choice!
=q)printf(n*n);printf(1.建立单链表建立单链表);printf(2.取元素值取元素值);printf(3.查找查找n);printf(4.插入插入);printf(5.删除删除);printf(6.显示显示n);printf(7.删除大于删除大于mink且小于且小于maxk的元素值的元素值);printf(8.就地升序排序就地升序排序n);printf(9.就地逆置就地逆置);printf(a.有序表插入有序表插入);printf(q.退出退出n);printf(n请选择操作:
请选择操作:
);fflush(stdin);scanf(%c,&choice);数据结构作业参考答案switch(choice)case1:
printf(请输入单链表中结点个数:
请输入单链表中结点个数:
);scanf(%d,&n);Create_L2(L,n);break;case2:
printf(请输入元素位序请输入元素位序:
);scanf(%d,&i);GetElem_L(L,i,e);printf(元素值为元素值为:
%dn,e);break;case3:
printf(请输入要查找的元素请输入要查找的元素:
);scanf(%d,&e);if(dlbcz(L,e)printf(查找成功查找成功!
);elseprintf(查找失败。
查找失败。
);break;case4:
printf(请输入插入位置请输入插入位置:
);scanf(%d,&i);printf(请输入要插入的元素请输入要插入的元素:
);scanf(%d,&e);if(ListInsert_L(L,i,e)printf(插入成功!
单链表为:
插入成功!
单链表为:
);elseprintf(插入失败。
插入失败。
);break;case5:
printf(请输入删除位置请输入删除位置:
);scanf(%d,&i);if(ListDelete_L(L,i,e)printf(删除成功!
删除成功!
);elseprintf(删除失败。
删除失败。
n);break;case6:
printf(n单链表为:
单链表为:
);xsList(L);break;case7:
printf(请输入请输入mink和和maxk:
);scanf(%d,%d,&mink,&maxk);DelList(L,mink,maxk);数据结构作业参考答案break;case8:
sh_sort(L);break;case9:
nizhi(L);break;casea:
printf(请输入在有序表中插入的元素值请输入在有序表中插入的元素值:
);scanf(%d,&e);yxcharu(L,e);break;作业作业2.栈、队列、数组栈、队列、数组非编程作业:
1若进栈序列为ABCD,请写出全部可能的出栈序列和不可能的出栈序列。
参考答案参考答案:
可能的出栈序列:
(14种)dcbacdbabacdcbdaadcbcbadbdcaacdbbcdaacbdbcadabdcbadcabcd不可能的出栈序列:
(10种)dbcadbacdabcdacbdcabcabdcdabbdaccadbadbc2简要说明循环队列如何判断队满和队空?
参考答案:
参考答案:
当牺牲一个存储结点,约定以“队列头指针在队列尾指针的下一位置(指环状的下一个位置)上”作为队列“满”状态的标志时,循环队列判断队满的条件为:
(rear+1)%MaxQsize=front;判断队空的条件为:
front=rear。
3设A为n阶对称矩阵,采用压缩存储存放于一维数组Fn(n+1)/2中(从F0开始存放),请分别给出存放上三角阵时任一矩阵元素aij(1i,jn)的地址计算公式和存放下三角阵时任一矩阵元素aij(1i,jn)的地址计算公式。
参考答案:
参考答案:
存放存放下下三角阵时三角阵时,任一矩阵元素aij(1i,jn)的地址计算公式为:
ij11-1Loc(a)=Loc(a)+1*2iijlij数据结构作业参考答案ij11-1Loc(a)=Loc(a)+1*2jjil存放存放上上三角阵时三角阵时,任一矩阵元素aij(1i,jn)的地址计算公式为:
4写出下面稀疏矩阵的三元组顺序表和十字链表表示。
参考答案:
参考答案:
编程作业栈采用顺序栈存储,试设计算法实
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 大连理工大学 作业 2016 参考答案