以前做过的一个实验,不知道能不能看懂 ,
你可以适当的该一下就可以 了.
不过我用的是结构体,差不多 一样吧
#include "stdafx.h"
#include "string.h"
#include "iostream.h"
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#define ok 1
//记录类型
typedef struct DataType
{
char num[5];
char nam[9];
char sex[8];
char phone[13];
char addr[31];
}data,jilu;
//链表节点创立
typedef struct node
{
DataType data;
struct node *next;
}Listnode,*Linklist;
Linklist p;
/////////////-------操作函数---------//////////////////
//链表的建立
int initlist_l(Linklist &l)
{
l=(Linklist)malloc(sizeof(Listnode));
if(!l)
exit(0);
l->next=NULL;
cout<<"链表已经建立!"<<endl;
return ok;
}
//数据的添加
int CreatList_l(Linklist &l)
{
Linklist p,q;
q=l;
p=(Linklist)malloc(sizeof(Listnode));
cout<<"编号(5):"; cin>>p->data.num;
cout<<"姓名(9):"; cin>>p->data.nam;
cout<<"性别(3):"; cin>>p->data.sex;
cout<<"电话(13):"; cin>>p->data.phone;
cout<<"地址(31):"; cin>>p->data.addr;
p->next=q->next;
q->next=p;
q=p;
return ok;
}
//显示查询函数
Linklist traverlist(Linklist &l,char nam1[9])
{
p=l->next;
while(p&&strcmp(p->data.nam,nam1)!=0)
{
p=p->next;
}
return p;
}
//数据的删除
int delet(Linklist head,char nam1[])
{
Linklist p1,p2;
p1=head;
while(strcmp(nam1,p1->data.nam)&&p1->next)
{
p2=p1;
p1=p1->next;
}
p2->next=p1->next;
cout<<"已经删除!"<<endl;
return ok;
}
//输出函数
void output(Linklist head)
{
Linklist p1;
p1=head->next;
while(p1)
{
cout<<"编号(5)"<<p1->data.num<<endl;
cout<<"姓名(9):"<<p1->data.nam<<endl;
cout<<"性别"<<p1->data.sex<<endl;
cout<<"电话(5)"<<p1->data.phone<<endl;
cout<<"地址(5)"<<p1->data.addr<<endl;
cout<<"*************************************"<<endl;
p1=p1->next;
}
}
//菜单
int menu_select()
{
int sn;
cout<<"++++++++++++++++++++++++++++++++++++++++++"<<endl;
cout<<"添加(1)"<<" "<<"查询(2)"<<" "<<"删除(3)"<<" "<<"输出所有记录(4)"<<" "<<"退出(0)"<<endl;
cout<<"请选择0-4:"<<endl;
cout<<"++++++++++++++++++++++++++++++++++++++++++"<<endl;
for(;;)
{
cin>>sn;
if(sn<0||sn>4)
cout<<"输入错误,请重新输入:"<<endl;
else
break;
}
return sn;
}
void main()
{
Linklist l;
char nam1[9];
initlist_l(l);
cout<<"----------------------通讯录管理系统----------------------"<<endl;
cout<<"=========================================================="<<endl;
for(;;)
{
switch(menu_select())
{
case 1:
cout<<"请输入记录"<<endl;
CreatList_l(l); //调用函数 添加记录
break;
case 2:
cout<<"请输入要查询的姓名:";
cin>>nam1;
cout<<"你要查询的信息如下:"<<endl;
traverlist(l,nam1); //调用函数 查询记录
if(p)
{
cout<<"numble:"<<p->data.num<<endl;
cout<<"name:"<<p->data.nam<<endl;
cout<<"sex:"<<p->data.sex<<endl;
cout<<"phone:"<<p->data.phone<<endl;
cout<<"addr:"<<p->data.addr<<endl;
}
else
cout<<"没有此项记录!!"<<endl;
break;
case 3:
//cout<<"删除记录"<<endl;
cout<<"请输入要删除的姓名:";
cin>>nam1;
delet(l,nam1); //调用函数 删除记录
break;
case 4:
output(l); //输出所有记录
break;
case 0:
exit(0); //退出
}
}
}