华中科技大学数据结构实验报告_第1页
华中科技大学数据结构实验报告_第2页
华中科技大学数据结构实验报告_第3页
华中科技大学数据结构实验报告_第4页
华中科技大学数据结构实验报告_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课课 程程 实实 验验 报报 告告课程名称:课程名称: 数数 据据 结结 构构 专业班级:专业班级:华中科技大学材控华中科技大学材控 1402 班班学学 号:号: U201411219 姓姓 名:名: 张煌张煌 指导教师:指导教师: 袁凌袁凌 报告日期:报告日期: 2016 年年 5 月月 20 日日 计算机科学与技术学院计算机科学与技术学院目录目录实验报告要求说明.11 基于顺序存储结构实现线性表的基本运算.11.1 问题描述.11.2 顺序表演示系统设计.11.2.1 系统总体设计.11.2.2 有关常量和类型定义.11.2.3 算法设计.11.3 顺序表演示系统实现与测试.11.3.1

2、系统实现.11.3.2 系统测试.11.4 实验小结.22 基于链式存储结构实现线性表的基本运算.32.1 问题描述.32.2 单链表演示系统设计.32.2.1 系统总体设计.32.2.2 有关常量和类型定义.32.2.3 算法设计.32.3 单链表演示系统实现与测试.32.3.1 系统实现.32.3.2 系统测试.32.4 实验小结.3参考文献.511 课程实验概述课程实验概述本次课程实验旨在加强学生课堂理论学习之后增强上机能力,熟练掌握并应用数据结构中的两种逻辑结构的典型代表线性表和树。线性表的顺序存储具有随机存取的功能,而链式存储能有效的利用动态存储空间,学会合理的选择这两种存储方式,看

3、似简单,但在实际应用具有很大的用处。而树(二叉树)是非线性逻辑结构的代表,树模型的建立可以说完全建立在递归思想之上,树的几乎所有操作都涉及到递归调用,当然我们也可以用栈来实现非递归调用,但是其思想也是相近的。因此树的实验旨在帮助我们递归思想的建立和成熟。2 实验一实验一 基于顺序结构的线性表实现基于顺序结构的线性表实现2.1 实验内容与要求实验内容与要求实验内容:基于顺序存储结构,实现线性表 ADT,具有 10 种基本运算。具体要求:1.提供一个实现功能的演示系统。 2.具体物理结构和数据元素类型自定。 3.线性表数据可以使用磁盘文件永久保存。2.2 程序概要设计程序概要设计 1.明确基本功能

4、程序需要实现的 12 个基本功能分别是:IntiaList(初始化),DestroyList(摧毁线性表),ClearList(清空线性表),ListEmpty(判断表空),ListLength(求表长),GetElem(取表中元素),LocatElem(获得元素地址),PriorElem(取前继),NextElem(取后继)。ListInsert(插入), ListDelete(删除),ListTrabverse(遍历显示),此外还有辅助功能:Load(载入),Save(保存)2.确定各功能实现的函数参数status IntiaList(SqList * L);status DestroyL

5、ist(SqList * L);status ClearList(SqList L);status ListEmpty(SqList L);int ListLength(SqList L);status GetElem(SqList L,int i,Elemtype *e);2int LocatElem(SqList L,Elemtype *e);3status PriorElem(SqList *L,Elemtype cur,Elemtype * pre_e);status NextElem(SqList L,Elemtype cur,Elemtype * next_e);status Li

6、stInsert(SqList *L, Elemtype e,int i);status ListDelete(SqList * L,Elemtype * e,int i);status ListTrabverse(SqList L,void (* visit)(Elemtype e);void Save(SqList L);status Load(SqList*L);2.3 数据结构与算法设计数据结构与算法设计为了满足概述中的功能,结合线性表结构,给出以下结构的定义:typedef int status;typedef structint item1;Elemtype;typedef str

7、uctElemtype * elem;int length;int listsize;SqList,*L;算法设计: 1.IntiaList:初始化线性表,传入的是头结点地址。申请一个大小为 LIST_INT_SIZE、类型为 Elemtype 的线性存储空间,并用头结点中的首结点指针指向该空间首地址。2.DestroyList:销毁头结点中首结点址针指向的线性存储空间,传入的是头结点地址。3.ClearList:与 Destroy 类似但是又有不同,ClearList 并不销毁物理空间,而是修改逻辑关系值。4.ListEmpty:判空功能,判断表是否为空表。传入的是头结点值,而非地址,因为不

8、需要对头结点进行修改。若长度为 0,表空,否则不空。5.ListLength:求表长功能,由于创建过程中已经把表长信息包含在头结点中,所以直接4调用并显示即可。6.GetElem:获取第 i 号元素,传入的是头结点值、元素编号 i、以及出口表结点地址。7.LocatElem:取指定元素编号,传入头结点值、存储了所需元素信息的一个临时表结点值、equal 函数地址。采用顺序比较法从表头遍历并比较,一旦找到,返回编号i。8.PriorElem:求指定元素的前一个元素的内容,传入头结点值、包含指定元素信息的一个临时表结点值、存储前一个元素的表结点地址。主要思路是先调用LocatElem 确定指定元素

9、的位置,如果不是首结点则可直接取到 PriorElem 的地址。9.NextElem:与 PriorElem 功能类似,不再赘述。10.ListInset:插入一个数据元素,传入头结点地址、插入位置 i、临时表结点值。在调用插入函数前构造一个临时表结点,用于存储数据元素信息。进入插入子函数,插入前先判断插入位置是否合理,再判断是否“满载”。如果满载则重新申请更大的存储空间。接下来正式插入数据元素,“先空位置再插入”。11.ListDelete: 删除一个数据元素,传入头结点地址、删除位置 i。删除前先判断位置是否合理,先删除元素,然后将所有删除元素之后的元素前移一个位置。12.ListTrab

10、verse: 传入头结点,循环访问各个元素,直至到表尾停止。2.4 输入输出设计输入输出设计1.输入: 在输入方面,我采用了用户自定义输入的方式,既可以采用用户自行输入,又可以载入之前保存的数据。在每次操作之后,会提示是否保存刚才的数据,以便下次再次使用,以下是用户自行输入的功能实现: void creat(SqList *L) int a=0; printf(Input the number of your datas?n); scanf(%d,&a); L-elem=(Elemtype*)malloc(a*sizeof(Elemtype);5 L-length=a; int i; prin

11、tf(Please input your datan); for (i=1;ielemi.item1); L-listsize=LIST_INIT_SIZE; printf(You have to save your data); getchar(); Save(*L);2.输出: 采用遍历输出,即功能 10 的输出。2.5 源程序及注释源程序及注释/* Linear Table On Sequence Structure */#include #include #include #include #define LIST_INIT_SIZE 10#define OK 1#define FAL

12、SE 0#define TRUE 1#define ERROR -1#define OVERFLOW -2#define LISTINCREMENT 1/*-*/typedef int status;typedef structint item1;Elemtype;typedef structElemtype * elem;int length;6int listsize;SqList,*L;int changed=0;/*-*/status IntiaList(SqList * L);status DestroyList(SqList * L);status ClearList(SqList

13、 L);status ListEmpty(SqList L);int ListLength(SqList L);status GetElem(SqList L,int i,Elemtype *e);int LocatElem(SqList L,Elemtype *e);status PriorElem(SqList *L,Elemtype cur,Elemtype * pre_e);status NextElem(SqList L,Elemtype cur,Elemtype * next_e);status ListInsert(SqList *L, Elemtype e,int i);sta

14、tus ListDelete(SqList * L,Elemtype * e,int i);status ListTrabverse(SqList L,void (* visit)(Elemtype e);/*-*/status compare(Elemtype e1,Elemtype e2);status equal(Elemtype x, Elemtype y);void display(Elemtype e);void Save(SqList L);status Load(SqList*L);void creat(SqList *L);/*-*/void menu(void);/*-*/

15、char file020;int main(void)SqList L;L.listsize=LIST_INIT_SIZE;int op=0;char req;do7 system(cls); menu(); printf(Do you want to input new liear table?Y/N); req=getchar();getchar(); if (req=Y |req=y) creat(&L); else printf(Do you want to load saved data?Y/N); req=getchar(); if (req=Y |req=y) while (!L

16、oad(&L) L.elem=(Elemtype*)malloc(L.listsize+)*sizeof(Elemtype); else printf(You still use the data use before!n); getchar(); getchar(); system(cls); menu(); printf( Then please input your option0-12:); scanf(%d,&op); switch(op) case 0: break; case 1: printf(n here is IntiaList(),which being realized

17、n);getchar();getchar(); if (IntiaList(&L) printf(Successfully realized!n);getchar();getchar(); /printf(Dou you want to save?Y/N) else printf(Not realised!n); getchar();getchar(); break;8 case 2: printf(n here is DestroyList(),which being realizedn); getchar();getchar(); if (DestroyList(&L) printf(Su

18、ccessfully realized!n); getchar();getchar(); else printf(Not realised!n); getchar();getchar(); break; case 3: printf(n here is ClearList(),which being realizedn); getchar();getchar(); if (ClearList(L) printf(Successfully realized!n); getchar();getchar(); else printf(Not realised!n); getchar();getcha

19、r(); break; case 4: printf(n here is ListEmpty(),which being realizedn); getchar();getchar(); if (ListEmpty(L) printf(It is an empty listn); getchar();getchar(); else printf(It is not an empty listn); getchar();getchar(); break; case 5: printf(n here is ListLength() ,which being realizedn); if (&L!=

20、NULL) printf(%d,L.elem1.item1); printf(Successfully realized!The length of L is %dn,ListLength(L); getchar();getchar();9 else printf(Not realised!n); getchar();getchar(); break; case 6: printf(n here is GetElem(),which being realizedn);getchar();getchar(); int i; Elemtype e; printf(which elem do you

21、 want to pick?i=?); scanf(%d,&i); if (GetElem(L,i,&e) printf(Successfully realized!n); printf(And the %dth elem data is %d,i,e.item1); getchar();getchar(); else printf(Not realised!n); getchar();getchar(); break; case 7: printf(n here is LocatElem(),which being realizedn); getchar();getchar(); int t

22、,i,a; Elemtype e; printf(What do you want to locate?item=); scanf(%d,&t); for (i=1;i=L.length;i+) if (L.elemi.item1=t) break; if (i=L.length+1) printf(There is no such item in this list!n); e=L.elemi; if (a=LocatElem(L,&e) printf(Successfully realized!n); printf(e is in the %dth locationn,a); getcha

23、r();getchar();10 else printf(Not realised!n); getchar();getchar(); break; case 8: printf(n here is PriorElem(),which being realizedn);getchar();getchar();Elemtype e,cur;int i;printf(To find the prio of who?i=);scanf(%d,&i);cur=L.elemi; if (PriorElem(&L,cur,&e) printf(Successfully realized!n); printf

24、(And the prio of elem%d is %dn,i,e.item1); getchar();getchar(); else printf(Not realised!n); getchar();getchar(); break; case 9: printf(n here is NextElem(),which being realizedn);getchar();getchar();Elemtype e,cur;int i;printf(To find the next of who?i=);scanf(%d,&i);cur=L.elemi; if (NextElem(L,cur

25、,&e) printf(Successfully realized!n); printf(And the nextelem of elem%d is %dn,i,e.item1); getchar();getchar(); else printf(Not realised!n); getchar();getchar(); break;11 case 10: printf(n here is ListInsert(),which being realizedn);getchar();getchar(); int i,j; Elemtype e; printf(choose where to in

26、sert?i=); scanf(%d,&i); printf(nInsert new data=); scanf(%d,&(e.item1); if (ListInsert(&L,e,i) printf(Successfully realized!n); printf(the list data is now:n); for (j=1;j=L.length;j+) printf(%d ,L.elemj.item1); getchar();getchar(); else printf(Not realised!n); getchar();getchar(); break; case 11: pr

27、intf(n here is ListDelete(),which being realizedn);getchar();getchar(); int i,j; Elemtype *e; printf(choose where to delete?i=); scanf(%d,&i); if (ListDelete(&L,e,i) printf(Successfully realized!n); printf(The deleted data is %dn,(*e).item1);getchar();getchar(); printf(the list data is now:n); for (

28、j=1;jelem=(Elemtype*)malloc(LIST_INIT_SIZE*sizeof(Elemtype); if (!L) exit(OVERFLOW); L-length=0; L-listsize=LIST_INIT_SIZE; return OK;status DestroyList(SqList * L)13 free(L); L=NULL; char req; printf(Are you sure to destroy the file?Y/N); req=getchar(); if (req=y|req=Y) remove(file0); printf(The fi

29、le has been destroyed!n); return OK;status ClearList(SqList L) L.length=0; return OK;status ListEmpty(SqList L) if (L.length=0) return TRUE; else return FALSE;int ListLength(SqList L) return L.length;status GetElem(SqList L,int i, Elemtype * e) if (!(L.length=0|iL.length) *e=L.elemi; return OK; 14 e

30、lse return ERROR;int LocatElem(SqList L,Elemtype *e) int i; for(i=1;ielem) return ERROR; else for(i=1;ilength;i+) if (compare(L-elemi,cur) break; if(i=1) return FALSE; else *pre_e=(L-elemi-1); return OK; status NextElem(SqList L,Elemtype cur,Elemtype * next_e) int i; if(!L.elem) return ERROR; else f

31、or(i=1;ilength=0) L-length+; L-elem1=e; return OK; if(iL-length) return FALSE; if(L-length=L-listsize) newbase=(Elemtype*)realloc(L-elem,(L-listsize+LISTINCREMENT)*sizeof(Elemtype); if(!newbase) return(OVERFLOW); L-elem=newbase; L-listsize+=LISTINCREMENT; q=&(L-elemi); for(p=&(L-elemL-length);p=q;p-

32、) *(p+1)= *p; *q=e; +L-length; return OK;status ListDelete(SqList * L,Elemtype * e, int i) Elemtype *q,*p; if(!L-elem) return ERROR; if(iL-length) return FALSE; q=&(L-elemi); for(p=&(L-elemL-length-1);p=q;p-) *p= *(p+1); (*e)=L-elemi;16 -L-length; return OK;status ListTrabverse(SqList L, void (* vis

33、it)(Elemtype e)int i;if(!L.length) return(0);printf(n-all elements of liear table-n);for(i=1;i=L.length;i+) visit(L.elemi);return(1);status compare(Elemtype e1 ,Elemtype e2 ) if (e1.item1=e2.item1) return OK; else return FALSE;/*-*/void menu(void)printf(nn);printf( Menu for Linear Table On Sequence

34、Structure n);printf(-n);printf( 1. IntiaList 7. LocatElemn);printf( 2. DestroyList 8. PriorElemn);printf( 3. ClearList 9. NextElem n);printf( 4. ListEmpty 10. ListInsertn);printf( 5. ListLength 11. ListDeleten);printf( 6. GetElem 12. ListTrabversen);printf( 0. Exitn);printf(-n);/*-*/status equal(Ele

35、mtype x, Elemtype y)return (x.item1=y.item1);17void display(Elemtype e)printf(%d ,e.item1);void Save(SqList L) FILE* fp=NULL; int i; char file120; do puts(nt creating data file.);puts(n please input the file name:);gets(file1);if (fp=fopen(file1, wb)=NULL) puts(nfile cannot open!);printf(press ENTER

36、 to continue.);getchar(); while (fp=NULL);for (i=1;ielem=(Elemtype*)malloc(LIST_INIT_SIZE*sizeof(Elemtype);18 if (changed) char req;puts(nYou have not saved,save nowY/N?);req=getchar();getchar();if (req=Y | req=y) Save(*L); do puts(nLoading data now.);puts(nPlease input the file name:);getchar();get

37、s(file1);if (fp=fopen(file1,rb)=NULL)puts(nThe file cannot open!);printf(press ENTER to continue.);getchar(); while (fp=NULL); int i=1; L-length=0; while (!feof(fp) if (ilistsize)fread(&L-elemi, sizeof(Elemtype), 1, fp);else printf(Loading overflown); getchar(); fclose(fp); return ERROR; L-length=i+

38、;L-length-; printf(Loading a %d lenth List,L-length); getchar();19 puts(nSuccessfully loaded); printf(press ENTER to continue.); getchar();changed=0;strcpy(file0,file1); fclose(fp); return OK;void creat(SqList *L) int a=0; printf(Input the number of your datas?n); scanf(%d,&a); L-elem=(Elemtype*)mal

39、loc(a*sizeof(Elemtype); L-length=a; int i; printf(Please input your datan); for (i=1;ielemi.item1); L-listsize=LIST_INIT_SIZE; printf(You have to save your data); getchar(); Save(*L);2.6 程序测试与结果程序测试与结果采用简易界面,实验测试数据之前保存在 hf0 文件中,内容为:1 2 3 4 5 20图 2.1下面选取几个重要功能展示:1.求表长:图 2.22.插入: 在 3 号位置插入值为 10 的元素。21

40、图 2.33.遍历输出:图 2.44.取某位置的元素: 22图 2.55.删除与插入类似,在实验二中演示其链式结构。2.72.7 复杂性分析复杂性分析空间复杂度为 O(1);时间复杂度见下表:函数时间复杂度函数时间复杂度InitialListO(1)LocatElemO(N)DestroyListO(1)PriorElemO(1)ClearListO(1)NextElemO(1)ListEmpyO(1)ListInsertO(N)ListLenthO(1)ListDeleteO(N)GetElemO(N)ListTrabverseO(N)表格 2.1233 实验二实验二 基于链式结构的线性表实

41、现基于链式结构的线性表实现3.2 程序概要设计程序概要设计 基于链式存储结构,实现线性表 ADT,具有 8 种基本运算,并籍此建立你在社交网站(如人人网)的联系人/好友表。提示: 提供一个实现功能的演示系统 具体物理结构和数据元素类型自行选定与设计 线性表数据可以使用磁盘文件永久保存3.2 程序概要设计程序概要设计1.明确基本功能 程序需要实现的 12 个基本功能分别是:IntiaList(初始化),DestroyList(摧毁线性表),ClearList(清空线性表),ListEmpty(判断表空),ListLength(求表长),GetElem(取表中元素),Search(查找),List

42、Insert(插入), ListDelete(删除),ListTrabverse(遍历显示),此外还有辅助功能:Load(载入),Save(保存) 2.确定各函数参数status IntiaList(LNode * L);status DestroyList(LNode * L);status ClearList(LNode *L);status ListEmpty(LNode *L);int ListLength(LNode *L);status Search(LNode *L);status LinkInsert(LNode *L);status LinkDelete(LNode *L);

43、status LinkMod(LNode *L);status LinkTrabverse(LNode *L);3.3 数据结构与算法设计数据结构与算法设计为了满足概述中的功能,结合线性表结构,给出以下结构的定义:24typedef int status;typedef structchar name10;char num20;Elemtype;typedef struct LNodeElemtype data;struct LNode *next;LNode;算法设计: 1.IntiaList:初始化线性表,传入的是头结点地址的地址。释放*L,重新申请一个节点作为表头节点,返回新的指向该表头

44、节点的指针的指针。2.DestroyList:销毁头结点中首结点址针指向的线性存储空间,传入的是头结点地址,并且销毁文件。3.ClearList:与 Destroy 类似但是又有不同,ClearList 并不销毁物理空间,而是修改逻辑关系值。4.ListEmpty:判空功能,判断表是否为空表。传入头结点地址,若头节点的 next 为空指针,则表空,否则不空。5.ListLength:求表长功能,传入头结点地址,每向下取一次节点,计数器自增 1,直至为空,此时计数器值为表长。6.Search:根据用户所选取的查找关键字进行查找。查找方式为逐节点查找,一旦找到便返回包含该关键字的数据元素的所有信息

45、。7.ListInset:插入一个数据元素,传入头结点地址的地址、插入位置 i、临时表结点值。在调用插入函数前构造一个临时结点,用于存储数据元素信息。进入插入子函数,插入前先判断插入位置是否合理。先断开所插位置,将临时节点插入。 8.ListDelete:删除一个数据元素,传入头结点地址的地址、删除位置 i。删除前先判断位置是否合理,先删除元素,将删除节点的前继和后继相连,释放删除节点。259.ListMod: 修改一个元素的信息,调用 Search 来找到所要修改的节点,根据用户要求自行修改,返回头结点地址。 10.ListTrabverse: 传入头结点地址,循环访问各个元素,直至到表尾停

46、止。3 3.4.4 输入输出设计输入输出设计同实验一相同,此处不再赘述。 3 3. .5 5 源程序及注释源程序及注释#include #include #include #include #define LIST_INIT_SIZE 10#define OK 1#define FALSE 0#define TRUE 1#define ERROR -1#define OVERFLOW -2#define LISTINCREMENT 1/*-*/typedef int status;typedef structchar name10;char num20;Elemtype;typedef str

47、uct LNodeElemtype data;struct LNode *next;LNode;26int changed=0;char req;LNode *loc;/*-*/status IntiaList(LNode * L);status DestroyList(LNode * L);status ClearList(LNode *L);status ListEmpty(LNode *L);int ListLength(LNode *L);status Search(LNode *L);status LinkInsert(LNode *L);status LinkDelete(LNod

48、e *L);status LinkMod(LNode *L);status LinkTrabverse(LNode *L);/*-*/status equal(Elemtype x, Elemtype y);void display(Elemtype e);void Save(LNode *L);/status Save(LNode* L);status Load(LNode*L);status creat(LNode *L);/*-*/void menu(void);/*-*/char file020;int main(void)int op=0;do LNode *L; system(cl

49、s); menu(); printf(Do you want to input new link table?Y/N); req=getchar();getchar(); if (req=Y |req=y) creat(&L);27 else printf(Do you want to load saved data?Y/N); req=getchar(); if (req=Y |req=y) if (Load(&L)=OK) puts(nSuccessfully loaded); printf(press ENTER to continue.); getchar(); else printf

50、(fail to loadn);getchar();getchar(); else printf(You still use the data use before!); getchar();getchar(); system(cls); menu(); printf( Then please input your option0-12:); scanf(%d,&op); switch(op) case 0: break; case 1: printf(n here is IntiaList(),which being realizedn);getchar();getchar(); if (I

51、ntiaList(&L)=OK) printf(Successfully realized!n);getchar();getchar(); /printf(Dou you want to save?Y/N) else printf(Not realised!Maybe the cause is overflown); getchar();getchar(); break; case 2: printf(n here is DestroyList(),which being realizedn);28 getchar();getchar(); if (DestroyList(L) printf(

52、Successfully realized!n); getchar();getchar(); else printf(Not realised!n); getchar();getchar(); break; case 3: printf(n here is ClearList(),which being realizedn); getchar();getchar(); if (ClearList(L) printf(Successfully realized!n); getchar();getchar(); else printf(Not realised!n); getchar();getc

53、har(); break; case 4: printf(n here is ListEmpty(),which being realizedn); getchar();getchar(); if (ListEmpty(L) printf(It is an empty listn); getchar();getchar(); else printf(It is not an empty listn); getchar();getchar(); break; case 5: printf(n here is ListLength() ,which being realizedn); printf

54、(Successfully realized!The length of L is %dn,ListLength(L); getchar();getchar(); break; case 6: printf(n here is Search(),which being realizedn);getchar();getchar(); if (Search(L)=OK) printf(Successfully realized!n);29 getchar();getchar(); else printf(Not realised!n); getchar();getchar(); break; ca

55、se 7: printf(n here is LinkInsert(),which being realizedn); getchar();getchar(); if (LinkInsert(L)=OK) printf(Successfully realized!n); getchar();getchar(); else printf(Not realised!n); getchar();getchar(); break; case 8: printf(n here is LinkDelete(),which being realizedn);getchar();getchar(); if (

56、LinkDelete(L)=OK) printf(Successfully realized!n); getchar();getchar(); else printf(Not realised!n); getchar();getchar(); break; case 9: printf(n here is LinkMod(),which being realizedn); getchar();getchar(); if (LinkMod(L)=OK) printf(Successfully realized!n); getchar();getchar(); else printf(Not re

57、alised!n); getchar();getchar(); break; case 10: printf(n here LinkTrabverse(),which being realizedn); getchar();getchar();30 if (LinkTrabverse(L)=OK) printf(Successfully realized!n); getchar();getchar(); else printf(Not realised!n); getchar();getchar(); break; default: ; while(op);printf(n-Welcome a

58、gain!-n);getchar();getchar();return 1;status IntiaList(LNode *L) free(*L); *L=(LNode*)malloc(sizeof(LNode); if (*L)=NULL) return OVERFLOW; (*L)-next=NULL; return OK;status DestroyList(LNode * L) free(L); L=NULL; char req; printf(Are you sure to destroy the file?Y/N); req=getchar(); if (req=y|req=Y)

59、remove(file0); printf(The file has been destroyed!n);31 return OK;status ClearList(LNode *L) L-next=NULL; return OK;status ListEmpty(LNode *L) if (L-next=NULL) return TRUE; else return FALSE;int ListLength(LNode *L) int i=0; printf(n%s,L-next-data.num); while (!(L=NULL) L=L-next; i+; printf(%d,i); r

60、eturn i-1;/*status GetElem(LNode L,int i, Elemtype * e) if (!(L.length=0|iL.length) *e=L.elemi; return OK; else return ERROR;32*/status Search(LNode *L) LNode *p; int i; char req120,req220; p=L-next; printf(Search ifo according to which way? 1.name 2.tel_num); scanf(%d,&i); if (i=1) printf(Please in

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论