通信链表

#include <iostream.h>
#include<conio.h>
#include<string.h>
//---------------------------------------------------------------------------
using namespace std;

struct ElemType2
{char name[10];
int tel;
};
struct NodeType2
{ElemType2 data;
NodeType2 *next;
};
class LinkListC 
{private:
NodeType2 *Head;
public:
 LinkListC();
 virtual ~LinkListC();
 void creat();
 void insert(ElemType2 x);
 void delet(ElemType2 x);
 void Display();
};
LinkListC::LinkListC()
{Head=new NodeType2;
Head->next=NULL;
//Head->data=0;
cout<<"/n init!"<<endl;
}

LinkListC::~LinkListC()
{NodeType2 *p=Head->next;
while(p!=NULL){Head->next=p->next;
delete p;
p=Head->next;}
cout<<"/n 链表已经删除。"<<endl;
delete Head;
}
void LinkListC::creat()
{NodeType2 *p,*s; ElemType2 x;
p=Head;
cout<<"/n  name=?";cin>>x.name;
cout<<"tel=?  (-999end)";  cin>>x.tel;
while(x.tel!=-999)
{s=new NodeType2;
s->data=x;s->next=NULL;
p->next=s;p=s;
cout<<"/n  name=?";
cin>>x.name;
cout<<"tel=?((-999 end)";cin>>x.tel;
}cout<<"/n 链表建立结束。";
}
void LinkListC::insert(ElemType2 x)
{NodeType2 *p,*q,*s;
s=new NodeType2;
s->data=x;
q=Head;
p=q->next;
while(p!=NULL&&strcmp(p->data.name,x.name)<0)
{q=p;
p=p->next;
}s->next=p;q->next=s;
}
void LinkListC::delet(ElemType2 x)
{NodeType2 *p,*q,*s;
q=Head;p=Head->next;
while(p!=NULL && strcmp(p->data.name,x.name)!=0)
{q=p;p=p->next;}
if(p!=NULL){q->next=p->next;
delete p;
cout<<"/n 删除节点成功。"<<endl;
}else
cout<<"/n x.name不存在。"<<endl;
}
void LinkListC::Display()
{NodeType2 *p;
p=Head->next;
while(p!=NULL)
{cout<<p->data.name<<"  ";
cout<<p->data.tel<<endl;
p=p->next;
}
cout<<endl;
}
int main(int argc, char* argv[])
{
ElemType2 e;
LinkListC h; int k,l=0;
cout<<"/n";
do{ cout<<"/n/n";
cout<<"/n/n  1 初步建立一个链表";
cout<<"/n/n  2 插入新的电话记录";
cout<<"/n/n  3 删除一个电话记录";
cout<<"/n/n  4 程序结束";
cout<<"/n/n***********************************************************";
cout<<"/n/n 输入你的选择(1 2 3 4)";
cin>>k;
switch(k){
case 1:{h.creat(); h.Display();
}break;
case 2:{cout<<"/n 插入的名字=?";cin>>e.name;
cout<<"/n 插入的电话号码=?";cin>>e.tel;
h.insert(e); h.Display();}break;
case 3:{cout<<"/n 删除的名字=?";cin>>e.name;
h.delet(e); h.Display();}break;
default:break;
}cout<<"/n*********************************************";
}while(k>=1&&k<4);
cout<<"/n    再见!"<<"/n任意键继续……";
_getch();
        getchar();
        return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值