主题:求助@!!!!
我已经写出程序,但是在运行中,不能执行2.
我不知道怎么写了 ,
我是初学的 !!!
请各位高手指点!!!
该程序的功能是实现单链表的定义和操作。该程序包括单链表结构类型以及对单链表操作的具体的函数定义和主函数。其中,程序中的单链表(带头结点)结点为结构类型,结点值为整型。单链表操作的选择以菜单形式出现,如下所示:
please input the operation:
1.初始化 2.清空 3.求链表长度 4.检查链表是否为空
5.检查链表是否为满 6.遍历链表 7.从链表中查找元素
8.从链表中查找与给定元素值相同的元素在顺序表中的位置
9.向链表中插入元素 10. 从链表中删除元素
其他键退出。。。。。
#include <stdio.h>
#include <stdlib.h>
#define TRUE 1
#define FLASE 0
#define OK 1
#define ERROR 0
#define OVERFLOW -2
/* 定义DataType为char类型 */
typedef char DataType;
typedef char TElemType;
/* 二叉树的结点类型 */
typedef struct BitNode
{ DataType data;
struct BitNode *lchild,*rchild;
}*BitTree;
/* 初始化二叉树,即把树根指针置空 */
void BitTreeInit(BitTree &BT)
{
BT=NULL;
printf("OK");
}
/* 按先序次序建立一个二叉树*/
int BitTreeCreate(BitTree &BT)
{char ch;
scanf(&ch);
if (ch==' ') BT=NULL;
else {
if(!(BT=(BitNode*)malloc(sizeof(BitNode)))) exit(OVERFLOW);
BT->data=ch; /*生成根结点*/
BitTreeCreate(BT->lchild); /*构造左子树*/
BitTreeCreate(BT->rchild); /*构造右子树*/
}
return 1;
} //BitTreeCreate
/* 检查二叉树是否为空 */
int BitTreeEmpty(BitTree &BT)
{
if(BT=NULL)
return 1;
else
return 0;
printf(" \n");
}
/* 按先序输出二叉树中的所有结点 */
int BitTraverse(BitTree BT)
{int Visit();
if(BT)
{
if(BT->data)
Visit();//如果访问到数据,则调用该函数
if(BitTraverse(BT->lchild))
Visit();//如果访问到左子树,则调用该函数
if(BitTraverse(BT->rchild))
{ Visit(); //如果访问到右子树,则调用该函数
return 1;
}
else return 0;
}
else return 1;
} //BitTraverse
int Visit()
{
printf("访问成功!");
return 0;
}
void main()
{int m;
int k=1;
BitTree BT;
printf("*************************************************************\n");
printf("1.初始化二叉树\n");
printf("2.按先序次序建立一个二叉树\n");
printf("3.检查二叉树是否为空(为空返回0,否则返回1)\n");
printf("4.按先序输出二叉树中的所有结点\n");
printf("5.退出\n");
printf("*************************************************************\n");
printf("请选择:\n");
while(k!=5)
{
scanf("%d",&k);
switch(k)
{case 1: BitTreeInit(BT);break;
case 2: BitTreeCreate(BT);
case 3: m=BitTreeEmpty(BT);
printf("%d",m);break;
case 4: BitTraverse(BT);break;
case 5: break;
default: printf("错误\n");break;
}
}
}
我不知道怎么写了 ,
我是初学的 !!!
请各位高手指点!!!
该程序的功能是实现单链表的定义和操作。该程序包括单链表结构类型以及对单链表操作的具体的函数定义和主函数。其中,程序中的单链表(带头结点)结点为结构类型,结点值为整型。单链表操作的选择以菜单形式出现,如下所示:
please input the operation:
1.初始化 2.清空 3.求链表长度 4.检查链表是否为空
5.检查链表是否为满 6.遍历链表 7.从链表中查找元素
8.从链表中查找与给定元素值相同的元素在顺序表中的位置
9.向链表中插入元素 10. 从链表中删除元素
其他键退出。。。。。
#include <stdio.h>
#include <stdlib.h>
#define TRUE 1
#define FLASE 0
#define OK 1
#define ERROR 0
#define OVERFLOW -2
/* 定义DataType为char类型 */
typedef char DataType;
typedef char TElemType;
/* 二叉树的结点类型 */
typedef struct BitNode
{ DataType data;
struct BitNode *lchild,*rchild;
}*BitTree;
/* 初始化二叉树,即把树根指针置空 */
void BitTreeInit(BitTree &BT)
{
BT=NULL;
printf("OK");
}
/* 按先序次序建立一个二叉树*/
int BitTreeCreate(BitTree &BT)
{char ch;
scanf(&ch);
if (ch==' ') BT=NULL;
else {
if(!(BT=(BitNode*)malloc(sizeof(BitNode)))) exit(OVERFLOW);
BT->data=ch; /*生成根结点*/
BitTreeCreate(BT->lchild); /*构造左子树*/
BitTreeCreate(BT->rchild); /*构造右子树*/
}
return 1;
} //BitTreeCreate
/* 检查二叉树是否为空 */
int BitTreeEmpty(BitTree &BT)
{
if(BT=NULL)
return 1;
else
return 0;
printf(" \n");
}
/* 按先序输出二叉树中的所有结点 */
int BitTraverse(BitTree BT)
{int Visit();
if(BT)
{
if(BT->data)
Visit();//如果访问到数据,则调用该函数
if(BitTraverse(BT->lchild))
Visit();//如果访问到左子树,则调用该函数
if(BitTraverse(BT->rchild))
{ Visit(); //如果访问到右子树,则调用该函数
return 1;
}
else return 0;
}
else return 1;
} //BitTraverse
int Visit()
{
printf("访问成功!");
return 0;
}
void main()
{int m;
int k=1;
BitTree BT;
printf("*************************************************************\n");
printf("1.初始化二叉树\n");
printf("2.按先序次序建立一个二叉树\n");
printf("3.检查二叉树是否为空(为空返回0,否则返回1)\n");
printf("4.按先序输出二叉树中的所有结点\n");
printf("5.退出\n");
printf("*************************************************************\n");
printf("请选择:\n");
while(k!=5)
{
scanf("%d",&k);
switch(k)
{case 1: BitTreeInit(BT);break;
case 2: BitTreeCreate(BT);
case 3: m=BitTreeEmpty(BT);
printf("%d",m);break;
case 4: BitTraverse(BT);break;
case 5: break;
default: printf("错误\n");break;
}
}
}