393编号大连理工大学《数据结构》作业2016-参考答案

上传人:玩*** 文档编号:145948215 上传时间:2020-09-24 格式:PDF 页数:26 大小:450.09KB
返回 下载 相关 举报
393编号大连理工大学《数据结构》作业2016-参考答案_第1页
第1页 / 共26页
393编号大连理工大学《数据结构》作业2016-参考答案_第2页
第2页 / 共26页
393编号大连理工大学《数据结构》作业2016-参考答案_第3页
第3页 / 共26页
393编号大连理工大学《数据结构》作业2016-参考答案_第4页
第4页 / 共26页
393编号大连理工大学《数据结构》作业2016-参考答案_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《393编号大连理工大学《数据结构》作业2016-参考答案》由会员分享,可在线阅读,更多相关《393编号大连理工大学《数据结构》作业2016-参考答案(26页珍藏版)》请在金锄头文库上搜索。

1、数据结构作业参考答案 作业作业 1. 线性表线性表 编程作业: 1 将顺序表逆置,要求用最少的附加空间。 参考答案参考答案 #include #include #include #define LIST_INIT_SIZE 100 #define LISTINCREMENT 10 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 typedef int Status; typedef int ElemType; typedef struct

2、ElemType *elem; int length; int listsize; SqList; /创建空顺序表创建空顺序表 Status InitList_Sq( SqList if (!L.elem) exit(OVERFLOW); L.length = 0; L.listsize = LIST_INIT_SIZE; return OK; /顺序表在第顺序表在第 i 个元素之前插入个元素之前插入 e Status sxbcr(SqList if(iL.length+1) return (ERROR); else q= for(p=p=q;-p) *(p+1)=*p; *q=e; +L.l

3、ength; return (OK); /顺序表显示顺序表显示 void xsList(SqList L) int i=L.length,k; for(k=0;ki;k+) printf(%d ,L.elemk); printf(n); /顺序表逆置顺序表逆置 void nizhi(SqList ElemType temp; for(;i10-20-30-40); (3) InsertList():在有序单链表中插入元素 x; (4) ReverseList():单链表就地逆置; (5) DelList():在有序单链表中删除所有值大于 mink 且小于 maxk 的 元素。 选作:使用文本菜

4、单完成功能选择及执行。 参考答案:参考答案: #include #include 数据结构作业参考答案 #include #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 typedef int Status; typedef int ElemType; typedef struct node ElemType data; struct node *link; Lnode, *LinkList; /头插法建立单链表头插法建立单链表 void

5、Create_L1(LinkList int i; L=(LinkList)malloc(sizeof(Lnode); L-link = NULL; for (i = n; i 0; -i) p=(LinkList)malloc(sizeof(Lnode); scanf(%d, p- link = L- link; L- link = p; /尾插法建立单链表尾插法建立单链表 void Create_L2(LinkList int i; L=(LinkList)malloc(sizeof(Lnode); L-data=0; L-link=NULL; 数据结构作业参考答案 p=L; for(i=

6、1;idata); s-link=NULL; p-link=s; p=s; /查找是否存在结点查找是否存在结点 e LinkList dlbcz(LinkList L, ElemType e) LinkList p=L-link; while(p!=NULL return (p); /在第在第 i 个元素之前插入结点个元素之前插入结点 e Status ListInsert_L(LinkList L, int i, ElemType e) LinkList p = L,s; int j = 0; while (p +j; if (!p | j i-1) return ERROR; s = (L

7、inkList) malloc ( sizeof (Lnode); s-data = e; s-link = p-link; p-link = s; return OK; /删除第删除第 i 个结点个结点 Status ListDelete_L(LinkList L, int i, ElemType int j = 0; 数据结构作业参考答案 while (p-link +j; if (!(p-link) | j i-1) return ERROR; q=p-link; p-link=q-link; e=q-data; free(q); return OK; /求第求第 i 个元素值个元素值

8、Status GetElem_L(LinkList L, int i, ElemType LinkList p=L-link; while(p j+; if(!p|ji) return ERROR; e=p-data; return OK; /显示单链表中元素显示单链表中元素 void xsList(LinkList L) LinkList p=L-link; while(p) printf(%d ,p-data); p=p-link; /删除大于删除大于 mink 且小于且小于 maxk 的元素的元素 void DelList(LinkList while(p-link 数据结构作业参考答案

9、 q=p; while(q p-link=q; /就地升序排序就地升序排序 void sh_sort(LinkList p-link=NULL; while(q) p=L-link; pre=L; while(p p=p-link; u=q-link; pre-link=q; q-link=p; q=u; /就地逆置就地逆置 void nizhi(LinkList p-link=NULL; while(q) u=q-link; q-link=L-link; L-link=q; q=u; 数据结构作业参考答案 /有序表插入有序表插入 void yxcharu(LinkList pre=L; p=

10、L-link; while(p s=(LinkList)malloc(sizeof(Lnode); s-data=e; s-link=p; pre-link=s; main() LinkList L; int n,i,mink,maxk; ElemType e; char choice=0; while(choice!=q) printf(n*n); printf(1.建立单链表建立单链表 ); printf(2.取元素值取元素值 ); printf(3.查找查找 n); printf(4.插入插入 ); printf(5.删除删除 ); printf(6.显示显示n); printf(7.删

11、除大于删除大于 mink 且小于且小于 maxk 的元素值的元素值 ); printf(8.就地升序排序就地升序排序n); printf(9.就地逆置就地逆置 ); printf(a.有序表插入有序表插入 ); printf(q.退出退出n); printf(n 请选择操作:请选择操作:); fflush(stdin); scanf(%c, 数据结构作业参考答案 switch(choice) case 1: printf(请输入单链表中结点个数:请输入单链表中结点个数:); scanf(%d, Create_L2(L,n); break; case 2: printf(请输入元素位序请输入元素

12、位序:); scanf(%d, GetElem_L(L,i,e); printf(元素值为元素值为:%dn,e); break; case 3: printf(请输入要查找的元素请输入要查找的元素:); scanf(%d, if(dlbcz(L,e) printf(查找成功查找成功!); else printf(查找失败。查找失败。); break; case 4: printf(请输入插入位置请输入插入位置:); scanf(%d, printf(请输入要插入的元素请输入要插入的元素:); scanf(%d, if(ListInsert_L(L,i,e) printf(插入成功!单链表为:插

13、入成功!单链表为:); else printf(插入失败。插入失败。); break; case 5: printf(请输入删除位置请输入删除位置:); scanf(%d, if(ListDelete_L(L,i,e) printf(删除成功!删除成功!); else printf(删除失败。删除失败。n); break; case 6: printf(n 单链表为:单链表为:); xsList(L); break; case 7: printf(请输入请输入 mink 和和 maxk:); scanf(%d,%d, DelList(L,mink,maxk); 数据结构作业参考答案 break

14、; case 8: sh_sort(L); break; case 9: nizhi(L); break; case a: printf(请输入在有序表中插入的元素值请输入在有序表中插入的元素值:); scanf(%d, yxcharu(L,e); break; 作业作业 2. 栈、队列、数组栈、队列、数组 非编程作业: 1 若进栈序列为 ABCD,请写出全部可能的出栈序列和不可能的出栈序列。 参考答案参考答案: 可能的出栈序列:(14 种) dcba cdba bacd cbda adcb cbad bdca acdb bcda acbd bcad abdc badc abcd 不可能的出栈序列:(10 种) dbca dbac dabc dacb dcab cabd cdab bdac cadb adbc 2 简要说

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号