华仔数据结构实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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));

}

五、实验数据记录和处理

相关文档
最新文档