抽象数据类型的表示与实现数据结构实验报告.doc
《抽象数据类型的表示与实现数据结构实验报告.doc》由会员分享,可在线阅读,更多相关《抽象数据类型的表示与实现数据结构实验报告.doc(59页珍藏版)》请在沃文网上搜索。
1、实 验 报 告 册实验报告(1)实验名称抽象数据类型的表示与实现同组人姓名实验性质 基本操作 验证性 综合性 设计性实验日期实验成绩教师评价:实验预习 实验操作 实验结果 实验报告 其它 教师签名:一、实验目的及要求1) 熟悉类C语言的描述方法,学会将类C语言描述的算法转换为C源程序实现;2) 理解抽象数据类型的定义,编写完整的程序实现一个抽象数据类型(如三元组)。3) 认真阅读和掌握本实验的参考程序,上机运行程序,保存和打印出程序的运行结果,并结合程序进行分析。二、实验内容线性表链式结构的创建,删除,插入等操作。线性表顺序结构的创建,删除,插入等操作。线性表顺序结构:一头文件:#ifndef
2、 _STDIO_H#define _STDIO_H#include stdio.h#include stdlib.h#define LIST_INIT_SIZE 100#define LISTINCREMENT 10#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERLOW -2typedef int ElemType;typedef int Status;typedef structElemType *elem;int length;int listsize; SqL
3、ist;Status InitList_Sq(SqList &L);void Destory_Sq(SqList &L);void ClearList_Sq(SqList &L);Status ListEmpty(SqList &L);Status ListLength(SqList &L);Status GetElem_Sq(SqList &L,int i,ElemType e);Status LocateElem_Sq(SqList &L,ElemType e);Status ListInsert_Sq(SqList &L,int i,ElemType e);Status ListDele
4、te_Sq(SqList &L,int i,ElemType e);void unionlist_Sq(SqList &La,SqList &Lb);#endif二,功能实现函数#includeh1.hStatus InitList_Sq(SqList &L)L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType);if(!L.elem)exit(OVERLOW);L.length=0;L.listsize=LIST_INIT_SIZE; return OK;void Destory_Sq(SqList &L)if(L.elem)free
5、(L.elem); L.elem=NULL;L.length=0;L.listsize=0;void ClearList_Sq(SqList &L)L.length=0;Status ListEmpty(SqList &L)if(L.length=0)printf(成功);return TRUE;else printf(失败);return FALSE;Status ListLength(SqList &L)return (L.length);Status GetElem_Sq(SqList &L,int i,ElemType e)if (iL.length)return FALSE;e=L.
6、elemi;printf(%d,e);return e;Status LocateElem_Sq(SqList &L,ElemType e)int i;for(i=1;i=L.length;i+)if(e=L.elemi)return i;return FALSE;Status ListInsert_Sq(SqList &L,int i,ElemType e)ElemType *newbase,*q,*p;if(iL.length+1)return ERROR;if(L.length=L.listsize)newbase=(ElemType *)realloc(L.elem,(L.listsi
7、ze+LISTINCREMENT)*sizeof(ElemType);if (!newbase)exit(-2);L.listsize+=LISTINCREMENT;q=&(L.elemi-1);for(p=&(L.elemL.length-1);p=q;p-)*(p+1)=*p;*q=e;+L.length;return OK;Status ListDelete_Sq(SqList &L,int i,ElemType e)int k;if(iL.length)return ERROR;e=L.elemi; for (k=i+1; k=L.length; k+) L.elemk-1=L.ele
8、mk;L.length-;return e;void unionlist_Sq(SqList &La,SqList &Lb)Status La_len,Lb_len;La_len=ListLength(La);Lb_len=ListLength(Lb);for(int i=1;i=Lb_len;+i)ElemType e;scanf(%d,&e);GetElem_Sq(Lb,i,e);if(!LocateElem_Sq(La,e) ListInsert_Sq(La,La.length+1,e);三,主函数#include h1.hvoid main()SqList l,lb;ElemType
9、i,a,e,j,k;doprintf( InitList-1n);printf( DestoryList-2n);printf( ClearList-3n);printf( ListEmpty-4n);printf( ListLength-5n);printf( GetElem-6n);printf( LocateElem-7n);printf( ListInsert-8n);printf( ListDelete-9n);printf( MergeList-10n);printf( 退出-0n);printf(请输入您的选择:);scanf(%d,&a);/while (a!=0);switc
10、h (a)case 1:InitList_Sq(l);break;case 2:Destory_Sq(l);break;case 3:ClearList_Sq(l);break;case 4:ListEmpty(l);break;case 5:k=ListLength(l);printf(长度为%dn,k);break;case 6:printf(请输入i en);scanf(%d %d,&i,&e);GetElem_Sq(l,i,e);printf(%dn,e);break;case 7:printf(请输入e:n);scanf(%d,&e);j=LocateElem_Sq(l,e);bre
11、ak;case 8:printf(请输入i e:n);scanf(%d %d,&i,&e);ListInsert_Sq(l,i,e);break;case 9:printf(请输入i e:n);scanf(%d %d,&i,&e);ListDelete_Sq(l,i,e);break;case 10:scanf(%d %d %d,&lb.elem,&lb.length,&lb.listsize);unionlist_Sq(l,lb);break;while (a!=0);线性表链式结构:一, 头文件#ifndef H #define H#include #include stdlib.h#de
12、fine ERROR 0#define OK 1typedef int ElemType;typedef int Status;typedef struct LNodeElemType length;ElemType data;struct LNode *next;LNode,*LinkList; void CreatList_L(LinkList &L,int n);Status GetElem_L(LinkList L,int i,ElemType &e);void ClearList_L(LinkList &L);Status ListInsert_L(LinkList &L,int i
13、,ElemType e);Status ListDelete_L(LinkList &L,int i,ElemType &e);Status ListLength(LinkList &L);#endif二, 功能实现函数#include h1.hvoid CreatList_L(LinkList &L,int n)int i;LinkList p=NULL;L=(LinkList)malloc(sizeof(LNode);L-next=NULL;for (i=n;i0;i-) p=(LinkList)malloc(sizeof(LNode);printf(输入第%d个数n,n);scanf(%
14、d,&p-data);p-next=L-next;L-next=p;+(L-length);Status GetElem_L(LinkList L,int i,ElemType &e)int j;LinkList p=NULL;p=L-next;j=1;while(p&jnext;+j;if(!p|ji)return ERROR;e=p-data;printf(%d,e);return OK;void ClearList_L(LinkList &L)LinkList p=NULL;while(L-next)p=L-next;L-next=p-next;free(p);Status ListDe
15、lete_L(LinkList &L,int i,ElemType &e)LinkList p,q;p = L;int j=0;while(p-next&jnext;+j;if(!(p-next)|ji-1)return ERROR;q=p-next;p-next=q-next;e=q-data;free(p);printf(删除成功);return OK;Status ListInsert_L(LinkList &L,int i,ElemType e)LinkList s,p=L;int j=0;while(p&jnext;+j;if(!p|ji-1)return ERROR;s=(Link
16、List)malloc(sizeof(LNode);s-data=e;s-next=p-next;p-next=s;return OK;Status ListLength(LinkList &L)return (L-length);三, 主函数#include h1.hvoid main()int i,n;ElemType e;LinkList l;doprintf(creat-1n);printf(insert-2n);printf(delete-3n);printf(clear-4n);printf(Get-5n);printf(Look-6n);printf(exit-0n);print
17、f(请输入您的选择:n);scanf(%d,&i);switch(i)case 1: printf(请输入n:n);scanf(%d,&n);CreatList_L(l,n);break;case 2: printf(输入i的值n);scanf(%d,&i);ListInsert_L(l,i,e);break;case 3: printf(输入i的值n);scanf(%d,&i);ListDelete_L(l,i,e);break;case 4: ClearList_L(l);break;case 5: printf(输入i的值n);scanf(%d,&i);GetElem_L( l,i,e)
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
10 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 抽象 数据类型 表示 实现 数据结构 实验 报告