#include <iostream>
#include <cstring>
#include<cstdlib>
using namespace std;
class LinkNode
{
private:
char m_name[20];
int m_age;
LinkNode *m_next;
public:
LinkNode();
LinkNode(char *name, int age);
void SetNext(LinkNode *n);
LinkNode *GetNext();
char *GetName();
int GetAge();
~LinkNode();
};
class LinkList
{
private:
LinkNode *m_first;
int m_sum;
public:
LinkList();
void Init();
void List();
void Insert();
void Delete();
void Show();
void Search();
~LinkList();
};
//关于节点的操作
LinkNode::LinkNode()
{
cout << "NULL" << endl;
}
LinkNode::LinkNode(char *name, int age)
{
strcpy(m_name, name);
m_age = age;
m_next = NULL;
}
void LinkNode::SetNext(LinkNode *n)
{
m_next = n;
}
LinkNode *LinkNode::GetNext()
{
return m_next;
}
char *LinkNode::GetName()
{
return m_name;
}
int LinkNode::GetAge()
{
return m_age;
}
LinkNode::~LinkNode()
{
m_age = 0;
}
//关于链表的操作
void LinkList::Show()
{
cout << "Please make your desion !" << endl;
cout << "1、 Insert" << endl;
cout << "2、 List" << endl;
cout << "3、 Delete" << endl;
cout << "4、 Exit" << endl;
}
LinkList::LinkList()
{
m_first = NULL;
m_sum = 0;
}
LinkList::~LinkList()
{
}
void LinkList::Init()
{
m_first = new LinkNode;//new 返回地址
}
void LinkList::Insert()
{
char name[20];
int age;
LinkNode *p = m_first;
cout << "Please input name :" << endl;
cin >> name;
cout << "Please input age :" << endl;
cin >> age;
LinkNode *s = new LinkNode(name, age);
for (int i = 0; i < m_sum; i++)
{
p = p->GetNext();
}
p->SetNext(s);
m_sum++;
}
void LinkList::Delete()
{
char name[20];
cout << "Please input name that you want to delete !" << endl;
cin >> name;
LinkNode *p = m_first;
LinkNode *q = NULL;
while (p != NULL && strcmp(p->GetName(), name) != 0)
{
q = p;
p = p->GetNext();
}
if (p == NULL)
{
cout << "This name do not exsists !" << endl;
}
if (strcmp(p->GetName(), name) == 0)
{
q->SetNext(p->GetNext());
delete p;
}
m_sum--;
}
void LinkList::List()
{
LinkNode *p = m_first->GetNext();
while(p!=NULL)
{
cout << p->GetName() << " " << p->GetAge() << endl;
p = p->GetNext();
}
}
int main(int argc, char const *argv[])
{
int choice;
LinkList L;
L.Init();
while(1)
{
L.Show();
cin >> choice;
switch (choice)
{
case 1:
L.Insert();
break;
case 2:
L.List();
break;
case 3:
L.Delete();
break;
case 4:
exit(1);
break;
}
}
return 0;
}