数据结构课程设计实验1-4(C语言)精品.docVIP

数据结构课程设计实验1-4(C语言)精品.doc

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验一 顺序表的操作 1、实验目的和要求: 1)了解顺序表的基本概念、顺序表结构的定义及在顺序表上的基本操作(插入、删除、查找以及线性表合并)。 2) 通过在visual C++实现以上操作的C语言代码。 3)提前了解实验相关的知识(尤其是C语言)。 2、实验内容: 1) 顺序表的插入算法,删除算法,顺序表的合并算法 2) 顺序表应用的实例(二选一) a) 利用顺序表的基本运行,实现如果在顺序表A中出现的元素,在顺序表B中也出现,则在顺序表A中将该元素删除。及实现A-B。 b) 顺序表A和B的元素都是非递减排列,将他们合并成一个顺序表C,要求C也是非递减排列。 3、部分参考实验代码: ⑴ 顺序表结构的定义: #include stdio.h #define ListSize 100 typedef int DataType; typedef struct { DataType list[ListSize]; int length; }SeqList; ⑵ 顺序表插入(在第i号元素前插入一个新的元素) int InsertList(SeqList *L,int i,DataType e) /*在顺序表的第i个位置插入元素e,插入成功返回1,如果插入位置不合法返回-1,顺序表满返回0*/ { int j; if(i1||iL-length+1) /*在插入元素前,判断插入位置是否合法*/ { printf(插入位置i不合法!\n); return -1; } else if(L-length=ListSize) /*在插入元素前,判断顺序表是否已经满,不能插入元素*/ { printf(顺序表已满,不能插入元素。\n); return 0; } else { for(j=L-length;j=i;j--)/*将第i个位置以后的元素依次后移*/ L-list[j]=L-list[j-1]; L-list[i-1]=e; /*插入元素到第i个位置*/ L-length=L-length+1; /*将顺序表长增1*/ return 1; } } ⑶ 顺序表删除 int DeleteList(SeqList *L,int i,DataType *e) { int j; if(L-length=0) { printf(顺序表已空不能进行删除!\n); return 0; } else if(i1||iL-length) { printf(删除位置不合适!\n); return -1; } else { *e=L-list[i-1]; for(j=i;j=L-length-1;j++) L-list[j-1]=L-list[j]; L-length=L-length-1; return 1; } 实验二 单链表的操作 1、实验目的 1)掌握用Visual C++6.0上机调试单链表的基本方法 2)理解链表的基本操作、了解链表的建立和输出 3)掌握链表的插入、删除、合并和归并等实现方法 2、实现内容 1、单链表基本操作的实现 2、链表应用的实例(二选一) a) 利用链表的基本运行,实现如果在链表A中出现的元素,在链表B中也出现,则在链表A中将该元素删除。 b)、约瑟夫(Josephus)问题的求解(循环链表的使用,使用C和C++语言均可)。 假设有编号为1,2,……,n的n个人围坐成一圈,约定从编号为k(n=k=1)的人开始报数,数到m的那个人出列,他的下一个人从1开始重新报数,数到m的那个人出列,依次类推,直到所有的人全部出列为止,由此产生一个出队编号的序列。 1、给定一个8个人的圈(n=8)6 2 7 4 3 5 1 8 。 3、部分参考实验代码: 1、结点定义 typedef int DataType; typedef struct Node { DataType data; struct Node *next; }ListNode,*LinkList; 2、单链表初始化 void InitList(LinkList *head) /*将单链表初始化为空。动态生成一个头结点,并将头结点的指针域置为空。*/ { if((*head=(LinkList)malloc(sizeof(ListNode)))==NULL) /*为头结点分配一个存储

您可能关注的文档

文档评论(0)

挑战不可能 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档