文档介绍:欢迎下载
欢迎下载
实验一线性表
.实验要求
掌握数据结构中线性表的基本概念。
熟练掌握线性表的基本操作:创建、插入、删除、查找、输出、求长度及合并并运算在顺序存储结构上的实验。
熟练掌握链表的各种操作和应用。
操作和应用。
.实验内容
方括号和花括号三种括号,编写一个算
设一个算术表达式包括圆括号,法判断其中的括号是否匹配。
.实验代码
:
#include<>
#inckide<>
#include<>
#defineNULL0typedefstructlist(
charstr;
structlist*next;
}list;
voidpush(charjist*);
intpop(*);
voiddeal(char*str);
main(void)
(
charstr[20];
printf("\n请输入一个算式:\n");
欢迎下载 6
欢迎下载 9
gets(str);
deal(str);
printf("正确巧;
getchar();
return0;
)
voiddeal(char*str)
(
list*L;
L=(list*)malloc(sizeof(list));
if(!L)
(
printf("错误!)exit(-2);
)
L->next=NULL;
while(*str)
{
if(*str==Xll*str===Ill*str===,{,)push(*str,L);
else
if(*Stl-='),ll*Stl-=,],11*51!-=,)')if(pop(*str,L)){puts("错误,请检查!)puts("按回车键退出)getchar();exit(-2);)str++;
)
if(L->next)
{
puts(嘴误,请检查门;
puts(”按任意键退出)getchar();exit(-2);
)
)
voidpush(charc,list*L)
(
list*p;
p=(list*)malloc(sizeof(list));
if(!p)
{
printf("错误!)
exit(-2);
)
p->str=c;
p->next=L->next;
L->next=p;
)
欢迎下载 10
欢迎下载 7
#definecheck(s)if(L->next->str=s){p=l->next;L->next=p->next;free(p);retum(O);)intpop(charcjist*L)
(
list*p;
if(L->next==NULL)return1;
switch(c)
(
case')':check('(')break;
case']':check(T)break;
case'}':check('{')break;
)
return1;
栈和队列是最基础的一种数据结构之一,为实现其他数据结构的奠定基石。
实验三树
.实验要求
掌握二义树,二叉树排序数的概念和存储方法。
掌握二义树的遍历算法。
熟练掌握编写实现树的各种运算的算法。
.实验内容
编写程序,求二叉树的结点数和叶子数。
编写递归算法,求二义树中以元素值为X的结点为根的子数的深度。
编写程序,实现二义树的先序,中序,后序遍历,并求其深度。
.实验代码
代码:
#include<>
#include<>
structnode{
chardata;
structnode*lchild,*rchild;
}bnode;
欢迎下载 8
欢迎下载 9
typedefstructnode*blink;
blinkcreat()
{
blinkbt;
charch;
ch=getchar();
if(ch=='*)return(NULL);
else
(
bt=(structnode*)malloc(sizeof(bnode));
bt->data=ch;
bt->lchild=creat();
bt->rchild=creat();
}
returnbt;
)
intn=0,nl=0;
voidpreorder(blinkbt)
(
if(bt)
(
n++;
if(bt->lchild==NULL&&bt->rchild==NULL)nl++;
preorder(bt->lchild);
preorde