} if(s!=NULL) { cout<
void search_name(Llist L,char n[10])//通过姓名进行检索 { lnode *s; s=L->next; if(s!=NULL){while(s&&strcmp(s->name,n)) s=s->next; if(s!=NULL) cout<
void search(Llist L)//设置是通过编号还是通过姓名查找数据 { int j,i; char n[10]; cout<<\编号查找1 \姓名查找2\ cin>>j; switch(j) { case 1: cout<<\输入要查询的记录编码\ cin>>i; search_num(L,i);//调用search num函数,查找数据 break; case 2: cout<<\输入要查询的姓名\ cin>>n; search_name(L,n);//调用search name函数,查找数据 break; default:
5
\
\
}
}
cout<<\输入错误\
插入操作:Insert LinkList(L,i,x)
Llist Insert(Llist L)//向链表中插入元素 { lnode *p=L; lnode *s; cout<<\请输入要插入的编号/姓名/性别/电话号码/地址:\ s=new lnode;//申请新的节点 cin>>s->num>>s->name>>s->sex>>s->pho>>s->add; while(p->next) p=p->next;//先将p的后继指向p p->next=s;//再将s指向p的后继 s->next=NULL;//尾节点、指针域置空 return L; }
删除操作:Del LinkList(L,i)
void del_num(Llist L,int i)//删除功能,通过编号删除 { lnode *p,*q; if(i<1) { cout<<\输入位置错误!\ return; } q=L;//指向链表的头节点 p=L->next;//p指向链表的第一个数据节点 while(p->next&&i!=p->num)//如果p没有到达链表的末尾,并且p的数据域不是i,则继续循环 { q=p; p=p->next;//p沿着next指针向后移动,移动前p指向q } i除成功!\删除p { q->next=p->next;//删除节点p
6
delete p; cout<<\删ndl; } else cout<<\不存在该记录!\}
void del_name(Llist L,char n[10])//通过姓名删除 { lnode *p,*q; q=L; p=L->next; while(p&&strcmp(p->name,n)) { q=p; p=p->next; } if(p!=NULL) { q->next=p->next; delete p; cout<<\删除成功!\ return; } else cout<<\不存在该记录!\}
void del(Llist L)//编写是通过编号,还是通过姓名删除 { int j,i; char n[10]; cout<<\编号删除1 \姓名删除2\ cin>>j; switch(j) { case 1: cout<<\输入要删除的记录编码\ cin>>i; del_num(L,i); break; case 2:
7
}
cout<<\输入要删除的姓名\ cin>>n; del_name(L,n); break; default: cout<<\输入错误\}
主程序模块 二叉树模块 顺序栈SqStack1模块 顺序栈SqStack模块
主程序模块中的对于表达式的存储结构调用了二叉树模块,而在构造表达式的二叉树模块中又调用了顺序栈SqStack模块,主程序中在将原表达式形式输入表达式转换为前缀表达式操作中调用了顺序栈SqStack1模块。
四、【详细设计】 建立链表及结构类型:
#include
typedef struct lnode//定义节点和单链表的数据类型 { int num;//编号 char name[10];//姓名 char sex[2];//性别 char pho[13];//电话 char add[23];//地址 lnode *next;//结构体指针域,存放后继的地址
}lnode,*Llist;//lnode是节点的类型,*Llist是指向该类型节点的的指针类型
8
相关推荐: