#include<stdio.h>
#include<string.h>
#include <conio.h>
#include<malloc.h>
#include<iostream.h>
#include <stdlib.h>
using namespace std;
struct Node
{
char name[31];
char num[31];
}Elem;
typedef struct LNode
{
Node data;
struct LNode *next;
}linklist;
linklist *head;
linklist *hcreat()
{
linklist *s,*p,*t;
int i,m;
p=new linklist;
p->next=NULL;
t=new linklist;
cout<<"请输入要输入的组数\n";
cin>>m;
cout<<"组\n";
cout<<"请输入姓名 电话号码\n";
while(m--){
cin>>t->data.name>>t->data.num;
s=new linklist;
s->data=t->data;
//strcpy(s->data.name,t->data.name);
// strcpy(s->data.num,t->data.num);
s->next=p->next;
p->next=s;
}
return p;
}
void anykey_f(void)
{
printf(" Press any key to continue...");
getch();
}
void print_f(linklist *q)
{
system("cls");
linklist *p;
p=q->next;
while(p->next!=NULL){
cout<<p->data.name<<" "<<p->data.num<<"\n";
p=p->next;
}
cout<<p->data.name<<" "<<p->data.num<<"\n";
cout<<endl;
anykey_f();
}
linklist *Locate_f( Node e)
{
linklist *p;
p=head->next;
while((p!=NULL)&&((strcmp(p->data.name,e.name)!=0)&&
(strcmp(p->data.num,e.num)!=0)))
p=p->next;
return p;
}
linklist *delete_f(linklist *t,Node e)
{
linklist *p,*q;
q=t;
p=t->next;
while((p!=NULL)&&((strcmp(p->data.name,e.name)!=0)&&
(strcmp(p->data.num,e.num)!=0))){
q=p;
p=p->next;
}
if(p==NULL)
cout<<"要删除的节点不存在\n";
else
{
q->next=p->next;
delete(p);
}
return t;
}
linklist *insert_f(linklist *t,Node e,Node q)
{
linklist *p,*s;
s=new linklist;
strcpy(s->data.name,e.name);
strcpy(s->data.num,e.num);
if(t->next==NULL){
t->next=s;
s->next=NULL;
}
p=Locate_f(q);
if(p==NULL)
cout<<"插入位置非法\n";
else{
s->next=p->next;
p->next=s;
}
return t;
}
int main()
{
system("cls");
while(1){
int option;
system("cls");
cout<<"--------------------------------------\n";
cout<<" 1 creat\n";
cout<<" 2 printf\n";
cout<<" 3 insert\n";
cout<<" 4 delete\n";
cout<<" 5 quit\n";
cout<<"Please enter your choice:";
option=getche();
switch(option)
{
case '1':head=hcreat();break;
case '2':print_f(head);break;
case '3':{
Node e,q;
cout<<"请输入要插入的姓名和电话号码及插入位置的姓名和电话号码\n";
cin>>e.name>>e.num;
cin>>q.name>>q.num;
head=insert_f(head,e,q);
}break;
case '4':{
Node e;
cout<<"请输入要删除的姓名和电话号码:";
cin>>e.name>>e.num;
head=delete_f(head,e);
}break;
case '5':exit(0);
}
}
return 0;
}