数据结构实验解释.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验一:线性表 一,实验目的 (1)理解和掌握线性顺序表元素建立,查找,插入、删除等算法。 (2)熟悉C语言的上机环境,掌握C语言的基本结构。 (3) 熟悉对单链表的一些基本操作和具体的函数定义。 (4) 通过单链表的定义掌握线性表的链式存储结构的特点。 (5) 熟悉对单链表的一些其它操作。 二,实验内容 实现单链表的定义和操作是最为基础的内容,共有如下几个环节: (1)建立结点类型。 (2)初始化单链表。 (3)求单链表的长度。 (4)用前插法建立单链表。 (5)从单链表表中查找元素。 (6)向单链表中插入元素。 (7)从单链表中删除元素。 三,问题描述 (1)建立一个线性顺序表,要求从键盘输入几个数,并将该线性顺序表的 元素从屏幕显示出来; (2) 编写插入和删除函数,由用户输入待插入元素及插入位置,将完成插 入后的线性顺序表输出;由用户输入删除第几个元素,将完成删除 的线性顺序表输出。 (3) 编写查找函数,在上面的线性顺序表中查找其中一个元素,如果找到, 返回该元素在线性顺序表中该元素的值。 (4)编写求单链表长度的函数,结果为输出元素的个数。 四,实验代码 /* 本实验程序要求单链表的数据域是字符串,完成单链表的初始化、插入、删除操作 插入时不允许重复的串插入表中。 */ #include stdlib.h #include stdio.h #include iostream using namespace std; typedef char DataType; //定义DataType为字符类型,后面用字符数组表示字符串 typedef struct LNode { DataType string[10]; LNode *next; }LNode,*Listpointer; //定义单链表的结点类型 Listpointer Creatnullnode()//创建一个空结点 { Listpointer p; //定义头指针 p=(Listpointer)malloc(sizeof(LNode)); p-next=NULL; return p; } int ListpointerLength(Listpointer L) { int k=0; while(L-next) { k++; L=L-next; } return k; } //求单链表的长度 void ListpointerTraverse(Listpointer L) { Listpointer p=L; printf(当前链表为:\n); while(L-next) { printf(%s,L-next-string); printf(\n); L=L-next; } cout共ListpointerLength(p)个元素endlendl; } //显示单链表 int ListpointerEmpty(Listpointer L) { return(L-next==NULL); } //检查单链表是否为空 Listpointer ListpointerGet(Listpointer L,int i) { if(i1||iListpointerLength(L))return NULL; for(int k=0;ki;k++) L=L-next; return L; } //从单链表表中查找元素 int ListpointerLocate(Listpointer L,DataType* x) { int k=0; while(L-next) { k++; if(strcmp(L-next-string,x)==0)return k; L=L-next; } return -1; } //从单链表表中查找与给定元素值相同的元素在链表中的位置 void ListpointerInsert(Listpointer L,int i,DataType* x) { Listpointer p=L; if(i1||iListpointerLength(L)+1) { cout位置越界,未插入!endlendl; return; } while((p-next)(strcmp(p-next-string,x)!=0)) { p=p-next; } if(p-next) { printf(该数据之前结点已存在,未插入\n); return; } else { p=L; for(int k=1;ki;k++) L=L-next; Listpoint

文档评论(0)

w6633328 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档