发布时间 : 星期五 文章数据结构课程设计论文(手机通讯录管理系统,最佳旅游路线规划问题,图书租借管理问题)更新完毕开始阅读4a02b052ce2f0066f533228f
借书如果出现书目不存在:
还书:
17
附录
源程序清单 //2.h
#include
#define EQ(a,b) (!strcmp((a),(b))) #define LT(a,b) (strcmp((a),(b))<0)
#define LQ(a,b) (strcmp((a),(b))<=0) //定义字符串比较函数 typedef struct BiTNode {
char data[10]; // 定义树的节点存储的信息
struct BiTNode *lchild,*rchild; //定义结点的左子树和右子树 }*BiTree; //定义树的结构
int SearchBST(BiTree T,char ch[20],BiTree f,BiTree &p) //在二叉树中递归地查找关键字为ch[20]的数据元素 { //
FILE *fp=fopen(\ if(!T)
{ p=f;return 0;} //如果树为空,则指针p else if (EQ(ch,T->data)) { p=T; return 1; }
else if (LT(ch,T->data))
return SearchBST(T->lchild,ch,T,p); else
return SearchBST(T->rchild,ch,T,p); }
int InsertBST(BiTree &T,char ch[20]) {
if(!SearchBST(T,ch,NULL,p)) //
FILE *fp=fopen(\
BiTree p,s;
18
{
s=(BiTree)malloc(sizeof(BiTNode));
strcpy(s->data,ch);
s->lchild=NULL; s->rchild=NULL; if(!p) T=s; else
if (LT(ch,T->data)) p->rchild=s; else p->lchild=s; return 1;
}
else return 0;
}
int InsertBST1(BiTree &T,char ch[20]) {
// FILE *fp=fopen(\
BiTree p,s;
if(!SearchBST(T,ch,NULL,p)) { } else
return 0;
s=(BiTree)malloc(sizeof(BiTNode)); strcpy(s->data,ch); s->lchild=s->rchild=NULL; if(!p)
T=s;
p->lchild=s; p->rchild=s;
else if (LT(ch,p->data))
else
return 1;
19
}
int Delete(BiTree &p) {
FILE *fp=fopen(\
BiTree q,s; if(!p->rchild) { q=p;p=p->lchild; free(q); }
else if(!p->lchild) {
q=p;p=p->rchild; free(q); } else{
q=p;s=p->lchild; while(s->rchild) {
q=s;s=s->rchild; }
strcpy(p->data,s->data); if(q!=p)
q->rchild=s->lchild; delete s; } return 1; }
int DeleteBST(BiTree&T,char ch[20]) { FILE *fp=fopen(\ if(!T) return 0; else {
if (EQ(ch,T->data)) {Delete(T);} else if(LT(ch,T->data))
DeleteBST(T->lchild,ch); else DeleteBST(T->rchild,ch);
20