四、程序编码:
主函数main
#include
int n;
printf(\数据结构基本内容\\n\\n\\n\ printf(\单链表基本操作\\n\\n\ printf(\二叉树基本操作\\n\\n\ printf(\表达式求值\\n\\n\
printf(\二叉排序树基本操作\\n\\n\ printf(\最小生成树\\n\\n\ printf(\拓扑排序\\n\\n\ printf(\图\\n\\n\
printf(\退出程序。\\n\\n\\n\\n\ do {
printf(\请选择所要操作的项目:\ scanf(\ getchar(); switch(n) {
case 1:
linemenu(); break; case 2:
bitreemenu(); break; case 3:
expressionmenu(); break; case 4: BSTmenu();
9
break; case 5:
mintreemenu(); break; case 6:
TopSortmenu(); break; case 7:
graphmenu(); break; case 0:
exit(0); default :
printf(\输入错误!\\n\\n\ }
}while(1); }
单链表头文件: #ifndef _line_h #define _line_h #define NULL 0
typedef struct LNode{ int data;
struct LNode *next; }LNode,*LinkList;
void creat(LinkList &L); void Insert(LinkList &L); void Delete(LinkList &L); void Print(LinkList L); void Inite(LinkList &L); void linemenu(); #endif
单链表源文件
#include
void Inite(LinkList &L)//初始化链表 {
L=NULL; }
void creat(LinkList &L)//创建链表 {
10
int n,i;
L=(LinkList)malloc(sizeof(LNode)); L->next=NULL; if(!L) {
printf(\存储分配失败\ exit(0); }
printf(\请输入链表长度:\ scanf(\ LinkList p=L,q; for(i=0;i printf(\请输入第%d个数据: \ q=(LinkList)malloc(sizeof(LNode)); scanf(\ p->next=q; p=q; } p->next=NULL; } void Insert(LinkList &L)//插入 { int z,i=0; LinkList p=L,s; printf(\请输入您要插入的位置:\ scanf(\ while(p&&i p=p->next; i++; } if(!p) { printf(\插入位置不对!\\n\ exit(0); } s=(LinkList)malloc(sizeof(LNode)); printf(\插入的元素为:\ scanf(\ s->next=p->next; p->next=s; 11 } void Delete(LinkList &L)//删除 { int z,i=0; LinkList p=L,q; printf(\请输入删除元素的位置:\ scanf(\ while(p->next&&i p=p->next; i++; } if(!p->next) { printf(\删除位置不对!\\n\ exit(0); } q=p->next; printf(\删除的元素为:%d\\n\ p->next=q->next; free(q); } void Print(LinkList L)//遍历 { LinkList p=L; if(!L) { printf(\链表为空\\n\ exit(0); } printf(\当前链表全部元素为:\ while(p->next) { p=p->next; printf(\ } printf(\} 单链表的菜单 #include 12 LinkList L; Inite(L); int i; while(1) { printf(\ printf(\你输入的是1功能: 单链表操作\\n\ printf(\ printf(\创建链表请按 1 ************\\n\ printf(\遍历链表请按 2 ************\\n\ printf(\插入元素请按 3 ************\\n\ printf(\删除元素请按 4 ************\\n\ printf(\返回主菜单请按 0 ************\\n\ printf(\请输入您的选择(1,2,3,4,0):\ scanf(\ if(i==0) { printf(\数据结构基本内容\\n\\n\\n\ printf(\单链表基本操作\\n\\n\ printf(\二叉树基本操作\\n\\n\ printf(\表达式求值\\n\\n\ printf(\二叉排序树基本操作\\n\\n\ printf(\最小生成树\\n\\n\ printf(\拓扑排序\\n\\n\ printf(\图\\n\\n\ printf(\退出程序。\\n\\n\\n\\n\ break; } else if(i==1)creat(L); else if(i==3)Insert(L); else if(i==2)Print(L); else if(i==4)Delete(L); else { printf(\输入选择错误!请重新输入\\n \ } } } 表达式求值的头文件 #ifndef _STACK_H #define _STACK_H #define N 100 typedef struct Stack 13