数据结构实验的报告

上传人:鲁** 文档编号:553580687 上传时间:2023-02-04 格式:DOC 页数:9 大小:146.50KB
返回 下载 相关 举报
数据结构实验的报告_第1页
第1页 / 共9页
数据结构实验的报告_第2页
第2页 / 共9页
数据结构实验的报告_第3页
第3页 / 共9页
数据结构实验的报告_第4页
第4页 / 共9页
数据结构实验的报告_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《数据结构实验的报告》由会员分享,可在线阅读,更多相关《数据结构实验的报告(9页珍藏版)》请在金锄头文库上搜索。

1、试验编号:_ 四川师大数据结构实验报告 2011 年3 月27 日计算机科学学院09 级4 班 实验名称:线性表实验姓名:余燕敏 学号: 2009110468 指导老师: 李敏 实验成绩:_一、实验目的及要求1) 熟悉线性表的基本运算在两种存储结构(顺序结构和链式结构)上的实现;2)以线性表的各种操作(建立、插入、删除等)的实现为重点;3)通过本次实习帮助学生加深对高级语言C语言的使用(特别是函数参数、指针类型、链表的使用)。2) 认真阅读和掌握本实验的参考程序,上机运行本程序, 保存和打印出程序的运行结果,并结合程序进行分析。按照你对线性表的操作需要,重新改写主程序并运行,打印出文件清单和运

2、行结果。二、实验内容1) 编程实现线性表两种存储结构中的基本操作的实现(线性表的创建、插入、删除和查找),并设计一个主菜单完成各个功能的调用。三、实验主要流程、基本操作或核心代码、算法片段(该部分如不够填写,请填写至附页)顺序表:主函数main主要调用子函数InitList_Sq(&sq)顺序表的创建、ListInsert_Sq(&sq,s,number)顺序表的插入、PrintNumber(sq)打印新得的数、ListDelete_Sq(&sq,s,&number顺序表的删除,建立新的整型变量s、ret、number,字符变量char。子函数InitList_Sq(&sq)完成顺序表的创建功

3、能,先构造一个空表L,并设置空表长度为0,然后初始存储容量。子函数ListInsert_Sq(&sq,s,number)完成顺序表的插入的功能,if(L-length=L-listsize)newbase=(ElemType*)realloc(L-elem,(L-listsize+LISTINCREMENT)*sizeof(ElemType);表示若当前存储空间已满,还要增加分配。q=&(L-elemi-1),q为插入位置,取i-1的地址赋给q。for(p=&(L-elemL-length-1);p=q;-p) *(p+1)=*p为插入位置及之后的元素后移。子函数ListDelete_Sq(&

4、sq,s,&number完成顺序表的删除的功能。首先用f(iL-length) return ERROR判断i的值是否合法,若不合法,则错误。P为被删除元素的位置。被删除元素之后的元素要往左移。主函数main主要调用子函数CreateList_L(&L,k)链表的创建、ListInsert_L(&L,m,&n)链表的插入、ListDelete_L(&L,m)链表的删除、length=length_L(L)、display_all(L,length)打印新得的数、GetELem_L(L,t,&e)链表的查找,并利用条件语句dowhile,switch语句。子函数CreateList_L(Link

5、List *L,int n)完成链表的创建功能。输入n个元素的值,建立带表头结点的单链表线性L。(*L)-next=NULL先建立一个带头结点的单链表,*L=(LinkList)malloc(sizeof(LNode)用malloc开辟一个空间生成新结点,scanf(%d,&p-data); p-next=NULL; tail-next=p; tail=tail-next;输入元素值,并插入到表头。子函数ListInsert_L(LinkList *L,int i,ElemType *e)完成链表的插入功能。用while语句寻找第i-1个结点,s=(LinkList)malloc(sizeof

6、(LNode); s-data=*e; s-next=p-next; p-next=s;生成新结点,并插入L中。子函数ListDelete_L(LinkList *L,int i)完成在带头结点单链线性表L中,删除第i个元素,并返回其值的功能。用while(p-next&jnext; +j; 语句寻找第i个结点,并令p指向其前驱。if(!(p-next)|ji-1)return ERROR; q=p-next; p-next=q-next; free(q);删除位置不合理。删除并释放结点。子函数display_all(LinkList L,int length)用于显示经过子函数处理所得的新的

7、数。四、实验结果的分析与评价(该部分如不够填写,请填写至附页)顺序表:#include stdio.h#include conio.h#include #include#define LIST_INIT_SIZE 100#define LISTINCREMENT 10#define OK 1#define ERROR 0#define OVERFLOW -1typedef int Status;typedef int ElemType ;typedef struct ElemType *elem; int length; int listsize;SqList;Status InitList_

8、Sq(SqList*L) int i; L-elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType); if(!L-elem) exit(OVERFLOW); L-length=0; L-listsize=LIST_INIT_SIZE; printf(How many number do you Init?n); scanf(%d,&L-length); for(i=0;ilength;i+) scanf(%d,&L-elemi); return OK;Status ListInsert_Sq(SqList *L,int i,ElemType

9、 e) ElemType* newbase,*q,*p; if(iL-length+1) return ERROR; if(L-length=L-listsize) newbase=(ElemType*)realloc(L-elem,(L-listsize+LISTINCREMENT)*sizeof(ElemType); if(!newbase) exit(OVERFLOW); L-elem=newbase; L-listsize+=LISTINCREMENT; q=&(L-elemi-1); for(p=&(L-elemL-length-1);p=q;-p) *(p+1)=*p; *q=e;

10、 +L-length; return OK;Status ListDelete_Sq(SqList*L,int i,ElemType *e) ElemType *p,*q; if(iL-length) return ERROR; p=&(L-elemi-1); *e=*p; q=L-elem+L-length-1; for(+p;plength; return OK;Status PrintNumber(SqList L) int i; printf(the number your put is:t); for(i=0;iL.length;i+) printf(%dt,L.elemi); re

11、turn OK; void main() SqList sq; int s; int ret; int number; char a=r; printf(1) Init the array! n); ret=InitList_Sq(&sq); printf(n);printf(2) Insert the number! n); printf(where do you Insert:n); scanf(%d,&s); printf(what do you Insert:n); scanf(%d,&number); ret=ListInsert_Sq(&sq,s,number); PrintNum

12、ber(sq); printf(n); printf(n);printf(3) Delete the number! n); printf(where do you Delete:n); scanf(%d,&s); ret=ListDelete_Sq(&sq,s,&number); PrintNumber(sq); printf(n); a=getchar(); 链表:#include #include #include #include #include #define OK 1#define ERROR 0#define NULL 0#define OVERFLOW -2typedef i

13、nt ElemType;typedef int Status;typedef struct LNodeElemType data;struct LNode *next;LNode,*LinkList;int CreateList_L(LinkList *L,int n)int i;LinkList p,tail;tail=*L;*L=(LinkList)malloc(sizeof(LNode);(*L)-next=NULL;tail=*L;printf(Please input the numbers!n);for(i=0;idata); p-next=NULL; tail-next=p; tail=tail-next; return OK; int display_all(LinkList L,i

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

当前位置:首页 > 资格认证/考试 > 自考

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