数据结构实验报告(共23页).doc
《数据结构实验报告(共23页).doc》由会员分享,可在线阅读,更多相关《数据结构实验报告(共23页).doc(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上院 系: 计算机科学学院 专 业: 网络工程 年 级: 2012 课程名称: 数据结构 学 号: 姓 名: 黄勇 指导教师: 吴立锋 2014年6月日年级2012班号1201组号学号专业网络工程姓名黄勇实验名称第二章 线性表实验室实验目的或要求 了解线性表的逻辑结构和各种存储表示方法,以及定义在逻辑结构上的各种基本运算及其在某种存储结构上如何实现这些基本运算。在熟悉上述内容的基础上,能够针对具体应用问题的要求和性质,选择合适的存储结构设计出相应的有效算法,解决与线性表相关的实际问题。实验原理(算法流程)1、 实验内容单链表的各种基本操作,包括创建,查找,插入,删除,输
2、出,合并等2、存储结构描述及说明链式存储结构typedef struct node char data; struct node *next; linklist;3、函数说明linklist *rcrect(linklist *head) 尾插法建立单链表void print(linklist *head) 输出函数,输出单链表。linklist location(linklist *head) 按序号查找函数,按序号查找单链表中数据。linklist inset(linklist *head) 插入函数,在单链表中插入数据。linklist delet(linklist *head) 删除函
3、数,删除单链表中的数据。int main() 主函数,程序运行调用各子函数。4、模块之间的调用关系开 始主函数创建单链表查找单链表数据删除数据输出函数插入函数程序清单:#include#include#include typedef struct node /定义节点类型 char data; struct node *next; /因为上面结构体的类型名是struct node linklist是别名 linklist; /一般List顺序表,linklist链表int main() int a; linklist *head; head=(linklist *)malloc(sizeof(
4、linklist); printf(请先建立单链表!n); linklist *rcrect(linklist *head); /调用尾插法 rcrect(head); /*linklist *hcrect(); /或者调用头插法 hcrect();*/ for(;) printf(n您想要对此单链表表做何种操作:n0.退出t1.查找t2.插入t3.删除n); scanf(%d,&a); if(a3) printf(您输入的数字有误,请重新输入!n); if(a=0) /退出 exit(0); if(a=1) linklist location(linklist *head); /调用按序号查
5、找函数 location(head); if(a=2) linklist inset(linklist *head); /调用插入函数 inset(head); if(a=3)/调用删除函数 linklist delet(linklist *head); /调用删除函数 delet(head); return 0;/1.尾插法建立单链表linklist *rcrect(linklist *head) /尾插法 链接到已经建立好的单链表的末尾 linklist *p,*last; char ch; /用于输入字符 last=head; printf(请输入你要存储的字符,以!号结束:n); wh
6、ile(ch!=!) p=(linklist *)malloc(sizeof(linklist); scanf(%c,&ch); p-data=ch; /每次都申请一个节点,数据域存放数据,指针域为空 / printf(%ct,p-data); 可以用来测试存储是否正确 last-next=p; last=p; /上一次的最后一个元素的地址赋给last p-next=NULL; void print(linklist *head); /调用输出函数 print(head); return head;/2.输出函数函数void print(linklist *head) linklist *p;
7、 p=head-next; printf(n你存储的数据为:n); while(p!=NULL) printf(%ct,p-data); p=p-next; /3.按序号查找函数linklist location(linklist *head) linklist *p; int i,k=0; p=head; printf(n请输入你要查找链表中第几个元素:n); scanf(%d,&i); while(p&knext; k+; if(ki|!p) printf(输入的序号有误,查找失败!n); exit(0); else printf(第%d个元素的值为:%cn,i,p-data); retu
8、rn *head;/4.插入函数linklist inset(linklist *head) linklist *p,*p1; int i,k=0; char ch; p=head; /不能为head-next printf(请输入你要在链表的第几个位置?t插入什么元素?n); scanf(%d %c,&i,&ch); p1=(linklist *)malloc(sizeof(linklist); /新建一个节点 p1-data=ch; p1-next=NULL; while(p&knext; k+; if(ki-1|!p) printf(输入的序号有误,插入失败!n); exit(0); e
9、lse p1-next=p-next; p-next=p1; printf(插入后的新数据为:n); /输出插入后的新数据 p=head-next; while(p!=NULL) printf(%ct,p-data); p=p-next; printf(n); return *head;/5.删除函数linklist delet(linklist *head) linklist *p,*p1,*p2; p=head; int i,k=0; printf(请输入你要删除第几个元素:n); scanf(%d,&i); while(p&knext; k+; if(ki-1|!p) printf(输入
10、的序号有误,删除失败!n); exit(0); else p2=p-next; p-next=p2-next; free(p2); printf(删除后的新数据为:n); /输出插入后的新数据 p=head-next; while(p!=NULL) printf(%ct,p-data); p=p-next; printf(n); return *head;专心-专注-专业组内分工(可选)无实验结果分析及心得体会实验结果截图:心得体会:通过本次实验对于线性表的运用更熟练了,对于单链表的建立,删除,插入,输出更加熟悉。成绩评定教师签名: 年 月 日年级2012班号1201组号学号专业网络工程姓名黄
11、勇实验名称第三章 栈和队列实验室实验目的或要求 在掌握栈(队列)特点的基础上,懂得在什么样的情况下能够使用栈(队列)。能熟练使用栈(队列)的一种存储表示,以及在该存储结构上如何实现栈(队列)的基本操作。在熟悉上述内容的基础上,能够针对具体应用问题的特点,选择栈(队列)设计出相应的有效算法,解决与栈(队列)相关的实际问题。实验原理(算法流程)1、实验内容括号匹配的检验。合法的括号包括()和【】两类,利用栈判断任意输入的一个括号序列是否匹配对出现,若是输出“right“,否则输出”error!“。且提示错误原因。2、 存储结构描述及说明typedef struct int *base;int *t
12、op;int stacksize; SqStack;顺序存储结构3、函数说明int InitStack(SqStack *S) 构造函数,构造一个空栈S,该栈预定义大小为STACK_INIT_SIZEint push(SqStack *S,int e) 插入函数,在栈S中插入元素e为新的栈顶元素。int pop(SqStack *S,int *e) 删除函数,若栈不空,则删除S的栈顶元素,用e返回其值,并返回1;否则返回ERRORvoid match(char str) 检测函数,对输入的表达式进行检测,括号是否匹配,匹配则返回配对,否则返回不配对。int main() 主函数。4、模块之间的
13、调用关系主函数构造函数插入函数删除函数检测函数程序清单:#include stdio.h#include conio.h #include stdlib.h #define ERROR -1 #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 typedef struct int *base;int *top;int stacksize; SqStack; int InitStack(SqStack *S) S-base=(int *)malloc(STACK_INIT_SIZE*sizeof(int); if(!S-base) prin
14、tf(n磁盘不足.n); getch(); exit(ERROR); S-top=S-base; S-stacksize=STACK_INIT_SIZE; return 1; int push(SqStack *S,int e) if(S-top-S-base=S-stacksize) S-base=(int *)realloc(S-base,(S-stacksize+STACKINCREMENT)*sizeof(int); if(!S-base) printf(n磁盘不足.n); getch(); exit(ERROR); S-top=S-base+S-stacksize; S-stacks
15、ize+=STACKINCREMENT; *S-top+=e; return 1; int pop(SqStack *S,int *e) if(S-top=S-base) printf(n栈已满.n); return ERROR; *e=*-S-top; return 1; void match(char str) SqStack S; char *p; int e; InitStack(&S); p=str; while(*p) if(*p=(|*p=|*p=) push(&S,*p); else if(*p=)|*p=|*p=) if(*(S.top-1)+1=*p|*(S.top-1)+
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 实验 报告 23
限制150内