简单的链表测试。
#include<iostream>
#include <conio.h>
#include<dos.h>
using namespace std;
typedef struct list//链表数据结构体
{
int data;
struct list* next;
} LIST ;
LIST* Head = new LIST;//定义一个链表的头
LIST* End = new LIST;//定义一个链表的尾
void AddList()//向链表中按从小到大的顺序添加一个数据
{
int m;
LIST *p = new LIST;
LIST* L, * R;
cout<<"请输入数据值。"<<endl;
cin>>m;
p->data = m;
if( End == Head->next )
{
p->next = End;
Head->next = p;
p = NULL;
}
else
{
L = Head;
R = Head->next;
while( !(L->data < m && m <= R->data || NULL == R->next))
{
L = L->next;
R = R->next;
}
p->next = R;
L->next =p;
p = NULL;
}
}
void PaintList()//输出链表
{
LIST *p = Head;
cout<<"---数据依次如下---"<<endl;
while(NULL != p->next->next)
{
p = p->next;
cout<<p->data<<" ";
}
cout<<endl;
getch();
}
void DelList()//删除链表中指定的数据
{
LIST *p = Head, *q;
int m;
cout<<"请输入要删除的数据"<<endl;
cin>>m;
while( !(m == p->next->data || NULL == p->next->next) )
{
p = p->next;
}
if(m == p->next->data)
{
q = p->next;
p->next=p->next->next;
delete q;
}
else
{
cout<<"数据"<<m<<"不存在!"<<endl;
getch();
}
}
void CreatList()//创建链表
{
int i = 0;
do{
cout<<"-----输入0~4选择菜单!-----"<<endl;
cout<<"- 1,添加数据 -"<<endl;
cout<<"- 2,删除数据 -"<<endl;
cout<<"- 3,打印数据 -"<<endl;
cout<<"- 0,退出。 -"<<endl;
cout<<"----------------------------"<<endl;
cin>>i;
switch(i)
{
case 1:
AddList();
break;
case 2:
DelList();
break;
case 3:
PaintList();
break;
default: break;
break;
}
system("cls");
}while(i != 0);
}
void main()
{
Head->next = End;
End->next = NULL;
End->data = 0;
CreatList();
}
运行结果:
(数据已经输入,这张是打印出的链表)