#include
#include
#include
#include
#define SIZE 100
#define INCREASE 10
struct node{
int data[100];
int length;//当前长度
}L;
/顺序表
typedef struct tree{
int data;
struct tree *rchild,*lchild;
}*BTree,Bnode;
二叉树
struct stack{
struct tree *elem[SIZE];
int length;
}T;
栈
int caidan();
int Initline(struct node &L);//初始化顺序表
int Initstack(struct stack &T);//初始化栈
int lineinsert(int e,struct node &L);//入顺序表
void CreatTree(BTree &p);//创建二叉树
BTree InsertTree(BTree p,int key);//搜索二叉树
//int InOrder(BTree &p);//中序遍历
int ZXBL(BTree p);//中序遍历
void push(struct stack &T,struct tree *e);//入栈
void Pop(struct stack &T,struct tree *(&e));//取栈顶元素
int main(){
system("color 5E");
struct tree *p;
int i,j,n,k,a,c;
int b[100];
while(1){
k=caidan();
if(k==1){
Initline(L);
printf("\t请输入伪随机数个数:");
scanf("%d",&n);
for(i=0;i
j=1+rand();
lineinsert(j,L);
}
printf("\n\t生成的排序表为:");
for(i=0;i
printf("%d ",L.data[i]);
printf("\n");
}
if(k==2){
CreatTree(p);
printf("\t构造二叉排序树成功!");
printf("\n");
}
if(k==3){
printf("\t");
ZXBL(p);
printf("\n");
}
if(k==4){
n++;
printf("%d\n",n);
printf("\t请输入要插入的元素:");
scanf("%d",a);
L.data[n-1]=a;
printf("\t输出元素\n");
printf("\t");
for(i=0;i
printf("%d ",L.data[i]);
printf("\n");
}
}
//InOrder(p);
system("pause");
return 0;
}
int Initline(struct node &L){
L.length=0;
return 0;
}
int lineinsert(int e,struct node &L){
L.data[L.length]=e;
L.length++;
return 0;
}
///
void CreatTree(BTree &p){//创建二叉树
int i=0;
p=NULL;
while(1){
p=InsertTree(p,L.data[i]);
i++;
if(i==L.length) break;
}
}
BTree InsertTree(BTree p,int key){//插入
BTree q=p;
BTree f,s;
while(q!=NULL){
f=q;
if(key==q->data) return q;
if(keydata) q=q->lchild;
else q=q->rchild;
}
s=(BTree)malloc(sizeof(Bnode));
s->data=key;
//printf("%d ",key);
s->lchild=NULL;
s->rchild=NULL;
if(p==NULL) return s;
if(keydata) f->lchild=s;
else f->rchild=s;
return p;
}
int Initstack(struct stack &T){
T.length=0;
return 0;
}
void push(struct stack &T,struct tree *e){
T.elem[L.length]=e;
T.length++;
}
void Pop(struct stack &T,struct tree *(&e)){
e=T.elem[T.length-1];
T.length--;
}
int ZXBL(BTree p){
if(p!=NULL){
ZXBL(p->lchild);
printf("%d ",p->data);
ZXBL(p->rchild);
}
return 0;
}
int caidan(){
int i;
printf("\t********************************************************\n");
printf("\t* (1)生成一个顺序表L *\n");
printf("\t* (2)对顺序表构造二叉排序树 *\n");
printf("\t* (3)利用栈结构实现中序遍历 *\n");
printf("\t********************************************************\n");
printf("\t请选择:1-3:");
scanf("%d",&i);
return i;
}
课程设计备份
最新推荐文章于 2024-06-03 19:29:35 发布
这是一个使用C语言编写的程序,包括顺序表的初始化、插入操作,二叉树的创建和中序遍历,以及栈的使用。用户可以选择生成随机数填充顺序表,构造二叉排序树,并进行中序遍历。
摘要由CSDN通过智能技术生成