数据结构链表操作C++.doc
文本预览下载声明
数据结构 C++ 链表管理 联系人管理
//file main.cpp
#include iostream
#include cstring
#includefstream
#include class.cpp
using namespace std;
void InitList(Person *L);//初始化
void Destroy(Person *L);//全部销毁
bool ListEmpty(Person * L);//判断表是否为空;空=true;非空=false;
int ListLength(Person *L);//求表长
void Display(Person *L);//输出
PersonInfo InputInfo(char _name[]);//输入联系人,结构体对象
void Inset(Person *L,PersonInfo per);//头插法插入
bool FindPerson(Person *L,char _name[]);//判断联系人是否存在
void getPerson(Person *L ,char _name[]);//查找指定联系人
void Delete_data(Person * L,char _name[]);//删除目标元素
void SaveFile(Person *L );//保存到文件中
void GetFromFile(Person * L);//读取文件
void Order();
int scan();//扫描输入的数据
void main()
{
cout***通讯录***endl;
Order();
char judgeName[20];
int quit=0;
Person * list=new Person;
InitList(list);
GetFromFile(list);
while (!quit)
{
switch(scan())
{
case 0://弹出菜单
Order();
break;
case 1://1.插入联系人
cout请输入姓名: ;
cinjudgeName;
if (!FindPerson(list,judgeName))
{
Inset(list,InputInfo(judgeName));
}
break;
case 2://输出所有联系人
if(!ListEmpty(list))
{
Display(list);
}
else
cout通讯录为空endl;
break;
case 3://查找指定联系人
cout请输入姓名: ;
cinjudgeName;
getPerson(list,judgeName);
break;
case 4://删除联系人
cout请输入姓名: ;
cinjudgeName;
Delete_data(list,judgeName);
break;
case 5://统计
if (ListEmpty(list))
{
cout通讯录为空endl;
}
else
cout总共ListLength(list)个联系人endl;
break;
case 6:
Destroy(list);
cout已清空所有联系人endl;
break;
case 7://保存到磁盘
SaveFile(list);
cout保存成功!endl;
break;
case 8:
exit(0);
break;
default:
quit=1;
}
}
}
void Order()
{
cout0.弹出菜单endl;
cout1.插入联系人endl;
cout2.输出所有联系人endl;
cout3.查找联系人endl;
cout4.删除联系人endl;
cout5.统计endl;
cout6.清空通讯录endl;
cout7.保存通讯录endl;
cout8.退出程序endl;
}
int scan()
{
int i=-1;
cini;
if (i=0i=10)
{
return i;
}
else
return -1;
}
//初始化
void InitList(Person *L)
{//带有头结点,头结点不存放数据
L-next=NULL;
}
//全部销毁
void Destroy(Person *L)
{
Person *pre=L-next
显示全部