通讯录问题

来源:互联网 发布:淘宝如何开企业店铺 编辑:程序博客网 时间:2024/05/02 02:11

 #include<iostream>
using namespace std;
#include<stdlib.h>
#include<string.h>

typedef struct LNode{
 char name[20];
 char telephone[11];
 struct LNode *next;
}LNode, *LinkList;


//通讯录的创建
void CreateList_L(LinkList &L,int n)
{
 //建立带头结点的单链线性表L. 
 LinkList q,p;
 cout<<"******通讯录链表的建立******"<<endl;
 L=(LinkList)malloc(sizeof(LNode));
 q=L;
 L->next=NULL;       //先建立一个带头结点的单链表
 for(int i=1;i<=n;i++)
 {
  cout<<"请输入第"<<i<<"个人的姓名和电话号码:"<<endl;
  p=(LinkList)malloc(sizeof(LNode));//生成新结点
        cin>>p->name;
  cin>>p->telephone;
     p->next=q->next;
     q->next=p;
  q=p
 }
  
}//CreateList_L


//通讯者结点的插入
void ListInsert_L(LinkList &L)
{
     LinkList p,s;
     int i,j=0;
  p=L;
     s=(LinkList)malloc(sizeof(LNode));
  s->next=NULL;
  cout<<"请输入通讯者结点插入的位置:";
  cin>>i;
     cout<<"请输入该通讯者的姓名和电话号码:"<<endl;
  cin>>s->name>>s->telephone;
     while(p&&j<i-1)
  {
   p=p->next;
   j++;
  }
  s->next=p->next;
  p->next=s;
}

 


//通讯录的查询
void ListQuery_L(LinkList &L)
{
  //在带头结点的单链线性表L中查询第i个位置的元素,即第i个人的姓名和电话号码
  LinkList p;
  p=L;
  int i,j=0;
  cout<<"***通讯者结点的查询***"<<endl;
  cout<<"请输入要查询的位置i:";
        cin>>i;
     while(p&&j<i-1)
     {
        p=p->next;
       ++j;
     }//寻找第i-1个结点
  p=p->next;
  cout<<"您要查询的人的姓名为:"<<p->name<<endl;
  cout<<"您要查询的人的电话号码为:"<<p->telephone<<endl;
}//ListQuery_L

//通讯录的删除
void ListDelete_L(LinkList &L)
{
  //在带头结点的单链线性表L中删除第i个位置的元素
  LinkList q,p;
  p=L;
  int i,j=0;
   cout<<"***通讯者结点的删除***"<<endl;
   cout<<"请输入要删除结点的位置i:";
   cin>>i;
   while(p->next&&j<i-1)         //寻找第i个结点,并令p指向其前趋
   {
    p=p->next;
    ++j;
   }
       q=p->next;
   p->next=q->next;
   free(q);
         cout<<"删除成功"<<endl;
}//ListDelete_L
//通讯录的输出
void ListOutput_L(LinkList &L)
{
  LinkList p;
  int i=1;
  p=L->next;
               cout<<"**********通讯者的输出********"<<endl;
               while(p)
      {
        cout<<"第"<<i<<"个人的姓名:"<<p->name<<endl;
                    cout<<"电话号码:"<<p->telephone<<endl;
           i++;
     p=p->next;
      }
 }


//通讯录的退出
void Esc(){
  cout<<"****退出管理系统*****"<<endl;
  cout<<"********欢迎下次再来********"<<endl;
}//Esc


//创建主控菜单程序
//1.通讯录链表的建立
//2.通讯者结点的插入
//3.通讯者结点的查询
//4.通讯者结点的删除
//5.通讯录链表的输出
//0.退出管理系统

void main()
{
 int i=1,choose,n;
      LinkList L;
 cout<<"***********欢迎进入通讯录管理主菜单程序*********"<<endl;
 cout<<"1.通讯录链表的建立"<<endl;
       cout<<"2.通讯者结点的插入"<<endl;
       cout<<"3.通讯者结点的查询"<<endl;
       cout<<"4.通讯者结点的删除"<<endl;
       cout<<"5.通讯录链表的输出"<<endl;
       cout<<"0.退出管理系统"<<endl;
 while(i)
 {
        cout<<"请选择功能菜单里的功能(0-5):";
        cin>>choose;
     switch(choose)
  {
         case 0:Esc();i=0;break;
         case 1:cout<<"请输入您想输入元素的个数:";
             cin>>n;
             CreateList_L(L, n);break;
         case 2:ListInsert_L(L);break;
         case 3:ListQuery_L(L);break;
         case 4:ListDelete_L( L);break;
         case 5:ListOutput_L(L);break;
         default:cout<<"您的输入范围不在0-5,请重新输入:"; break;
  }   
 }

}