数据结构实验报告(C语言)(强力推荐)

上传人:壹****1 文档编号:28518503 上传时间:2018-01-17 格式:DOC 页数:19 大小:391KB
返回 下载 相关 举报
数据结构实验报告(C语言)(强力推荐)_第1页
第1页 / 共19页
数据结构实验报告(C语言)(强力推荐)_第2页
第2页 / 共19页
数据结构实验报告(C语言)(强力推荐)_第3页
第3页 / 共19页
数据结构实验报告(C语言)(强力推荐)_第4页
第4页 / 共19页
数据结构实验报告(C语言)(强力推荐)_第5页
第5页 / 共19页
点击查看更多>>
资源描述

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

1、数据结构实验实验内容和目的:掌握几种基本的数据结构:集合、线性结构、树形结构等在求解实际问题中的应用,以及培养书写规范文档的技巧。学习基本的查找和排序技术。让我们在实际上机中具有编制相当规模的程序的能力。养成一种良好的程序设计风格。实验教材:数据结构题集(C 语言版) 清华大学出版社 2007 年实验项目:实验一、栈和循环队列、实验内容: 栈掌握栈的特点(先进后出 FILO)及基本操作,如入栈、出栈等,栈的顺序存储结构和链式存储结构,以便在实际问题背景下灵活应用。本程序采用的是链栈结构,具有初始化一个栈、PUSH、POP、显示所有栈里的元素四个功能。 循环队列掌握队列的特点(先进先出 FIFO

2、)及基本操作,如入队、出队等,学会循环队列的实现,以便在实际问题背景下灵活运用。本程序具有初始化一个队列、入队、出队、显示队列的所有元素、队列长度五个功能。、实验代码 栈程序代码:#include #include #define Stack_Size 6#define ERROR 0#define OK 1typedef int SElemType;typedef struct SNodeSElemType data;struct SNode *next;SNode,*LinkStack;int CreatTwo(LinkStack &head,int n)int i;SNode *p;he

3、ad=(LinkStack)malloc(sizeof(SNode);head-next=NULL;printf(请输入数据(数字):n);for(i=n;i0;-i)p=(SNode *)malloc(sizeof(SNode);scanf(%d,p-next=head-next;head-next=p;return 1;int menu_select()int sn;for(;)scanf(%d,if(sn6)printf(nt 输入错误,请重新输入n);elsebreak;return sn;int Push(LinkStack &top,SElemType e)SNode *q;q=(

4、LinkStack)malloc(sizeof(SNode);if(!q)printf(溢出!n);return(ERROR);q-data=e;q-next=top-next;top-next=q;return(OK);int Pop(LinkStack &top,SElemType &e)SNode *q;if(!top-next)printf(error!n);return(ERROR);e=top-next-data;q=top-next;top-next=q-next;free(q);return(OK);void main() int e;LinkStack top;printf(

5、1.初始化一个栈;n2.PUSH;n3.POP;n4.显示所有栈里的元素;n5.结束;n);while(1)switch(menu_select()case 1:if(CreatTwo(top,Stack_Size)printf(Success!n);break;case 2:printf(Push:n);scanf(%d,if(Push(top,e)printf(Success!n);break;case 3:if(Pop(top,e)printf(Success!n);printf(%dn,e);break;case 4:LinkStack p;printf(所有栈里的元素:n);p=to

6、p;while(p-next)p=p-next;printf(%7d,p-data);printf(n);break;case 5:return;运行结果: 循环队列程序代码:#include#include#define OVERFLOW -1#define OK 1#define ERROR 0#define MAXSIZE 100typedef structint *elem;/队列存储空间int front;int rear;SqQueue;/判断选择是否正确int menu_select()int sn;for(;)scanf(%d,if(sn6)printf(nt 输入错误,请重新

7、输入n);elsebreak;return sn;/参数(传出)SqQueue &Q,循环队列(空)int InitQueue(SqQueue &Q)Q.elem=(int *)malloc(MAXSIZE*sizeof(int);if(!Q.elem)exit(OVERFLOW);Q.front=Q.rear=-1;for(int i=0;i#define M 3void MatrixAdd(int m1MM,int m2MM,int resultMM)/两个矩阵 m1 和 m2 相加,结果放到 resultint i,j;for (i=0;i#define MAX 100void main

8、()int rMAX,i,k,low,high,mid,m,n;printf(nn 建立递增有序的查找顺序表(以-1 结束):n);for(i=0;ik)high=mid-1;elseif(rmidhigh)printf(没有找到n);printf(共进行%d 次比较。n,m);if(rmid#include #define MAX 50typedef struct btnodeint Data;struct btnode *Llink;struct btnode *Rlink;btnode,*btreetype;btreetype CreatTree(int n)/传入数据数量,返回根结点指

9、针int i;btreetype root=NULL;for (i=0;iData);newNode-Llink=NULL;newNode-Rlink=NULL;currentNode=root;if(currentNode=NULL)root=newNode;elsewhile (currentNode!=NULL)parentNode=currentNode;if(newNode-DataData)currentNode=currentNode-Llink;elsecurrentNode=currentNode-Rlink;if(newNode-DataData)parentNode-Ll

10、ink=newNode;elseparentNode-Rlink=newNode;return root;void OutputTree(btreetype &root)btreetype p;p=root-Llink;printf(建立的二叉树的左子树为:n);while (p!=NULL)printf(%-8d,p-Data);p=p-Llink;p=root-Rlink;printf(n 建立的二叉树的右子树为:n);while (p!=NULL)printf(%-8d,p-Data);p=p-Rlink;int depth(btreetype root)btreetype p;p=ro

11、ot;int dep1;int dep2;if(root=NULL)return 0;elsedep1=depth(p-Llink);dep2=depth(p-Rlink);if(dep1dep2)return(dep1+1);else return(dep2+1);void PreOrder(btreetype &root)/先序遍历(递归)btreetype p;p=root;if (p!=NULL)printf(%-5d,p-Data);PreOrder(p-Llink);PreOrder(p-Rlink);void InOrder(btreetype &root)/中序遍历(递归)bt

12、reetype p;p=root;if (p!=NULL)InOrder(p-Llink);printf(%-5d,p-Data);InOrder(p-Rlink);void InOrder_Norecuision(btreetype &root)btreetype stackMAX;btreetype p;int top=0;p=root;do while (p!=NULL)top+;stacktop=p;p=p-Llink;if (top0)p=stacktop;top-;printf(%-5d,p-Data);p=p-Rlink; while (p!=NULL|top!=0);void

13、PostOrder(btreetype &root)btreetype p;p=root;if (p!=NULL)PostOrder(p-Llink);PostOrder(p-Rlink);printf(%-5d,p-Data);void main()btreetype btree;int count;printf(请输入元素个数:n);scanf(%d,printf(请输入数据:n);btree=CreatTree(count);OutputTree(btree);printf(n 建立的二叉树的深度为:%dn,depth(btree);printf(n 先序遍历:n);PreOrder(btree);printf(n 中序遍历(递归算法):n);InOrder(btree);printf(n 中序遍历(非递归算法):n);InOrder_Norecuision(btree);printf(n 后序遍历:n);PostOrder(btree);printf(n);实验结果:

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

当前位置:首页 > 建筑/环境 > 建筑规划

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