华仔数据结构实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本科实验报告
课程名称:数据结构
实验项目:线性结构、树形结构、图结构、查找、排序实验地点:
专业班级:学号:
学生姓名:
指导教师:
2011年12 月24 日
实验项目:线性结构
实验目的和要求
熟练掌握线性结构的基本操作在顺序表和链式表上的实现。
二、实验内容和原理
设顺序表递增有序,编写一个程序,将x插入,使之仍然有序。
三、主要仪器设备
使用的计算机:Nopated++
四、操作方法与实验步骤
#include
#define maxlen 50
typedef int elemtype;
typedef elemtype sqlist[maxlen];
int creat(sqlist A)
{
int i,n;
printf("Please input length:\n");
scanf("%d",&n);
for(i=0;i { printf("Please input %dth element\n",i+1); scanf("%d",&A[i]); } return n; } void disp(sqlist A,int n) { int i; if(n==0) printf("The list is NULL:\n"); for(i=0;i printf("%4d",A[i]); printf("\n"); } int Insert(sqlist A,int n,int x) { int i=0,j; if(x>=A[n-1]) { A[n]=x; } else { while(A[i] i++; for(j=n;j>=i;j--) A[j+1]=A[j]; A[i]=x; } return n+1; } void main() { sqlist A; int x,n; n=creat(A); disp(A,n); printf("Please input you want to insert:\n"); scanf("%d",&x); n=Insert(A,n,x); disp(A,n); } 五、实验数据记录和处理 六、实验结果与分析 这个程序为比较基础的程序 七、讨论、心得 该程序可以帮助我加深对线性表的理解,引发我对数据结构这门课的兴趣 实验项目(树结构) 一、实验目的和要求 熟悉各种表示方法和便利方式,掌握有关算法,了解树在计算机科学中的应用。 二、实验内容和原理 编写递归算法,计算二叉树中的叶子节点数目 三、主要仪器设备 使用的计算机:nopated++ 四、操作方法与实验步骤 #include #include #define max 10 typedef struct node{ char data; node *lchild,*rchild; }Bitree; Bitree *B[max]; Bitree *Creatree(){ //建立二叉树 Bitree *T,*S; char ch; int front,rear,sign; sign=0; front=0; rear=-1; T=NULL; printf("建立二叉树:\n"); ch=getchar(); while(ch!='#'){ if(ch!='@'){ //输入结点不是虚结点 S=(Bitree *)malloc(sizeof(Bitree)); S->data=ch; S->lchild=S->rchild=NULL; rear++; B[rear]=S; if(rear==front){ T=S; sign++; } else{ if(sign%2==1) //寻找父结点 B[front]->lchild=S; if(sign%2==0){ B[front]->rchild=S; front++; } sign++; } } else{ //输入结点为虚结点 if(sign%2==0) front++; sign++; } ch=getchar(); } return T; } int Searchleaf(Bitree *T){ //计算叶子数 if(T==NULL) return 0; else if(T->lchild==NULL&&T->rchild==NULL) return 1; else return(Searchleaf(T->lchild)+Searchleaf(T->rchild)); } void visit(Bitree *T){ printf("%c\n",T->data); } void Inorder(Bitree *T){ //中序遍历二叉树 if(T!=NULL){ Inorder(T->lchild); visit(T); Inorder(T->rchild); } } void main(){ Bitree *T; T=Creatree(); printf("中序遍历:\n"); Inorder(T); printf("叶子数%d\n",Searchleaf(T)); } 五、实验数据记录和处理