#define OK 1;
#define ERROR 0;
#include<iostream>
using namespace std;
typedef int Status;
typedef struct LNode
{
int data;
struct LNode *next;
}LNode,*Linklist;
void print_list(Linklist &L)
{
Linklist p;
cout<<"建立的单链表为:"<<endl;
p=L->next;
while(p!=NULL)
{
cout<<p->data<<" ";
p=p->next;
}
cout<<endl;
}
void create_list1(Linklist &L)
{
Linklist p;
L=new LNode;
L->next=NULL;
cout<<"请输入链表元素(输入—1结束),建立带头结点的单链表:\n";
p=new LNode;
cin>>p->data;
while((p->data)!=-10000)
{
p->next=L->next;
L->next=p;
p=new LNode;
cin>>p->data;
}
}
//顺序建立单链表
void create_list2(Linklist &L)
{
Linklist p,q;
int ch,flag=1;
L=new LNode;
L->next=NULL;
cout<<"请输入链表元素(输入—1结束),建立带头结点的单链表:\n";
p=new LNode;
p=L;
while(flag)
{
cin>>ch;
if(ch!=-1)
{
q=new LNode;
q->data=ch;
p->next=q;
p=q;
}
else
{
flag=0;
p->next=NULL;
}
}
}
int main()
{
Linklist L1,L2;
int choice;
cout<<"***************************************************"<<endl;
cout<<"*** 选择单链表创建方式 ***"<<endl;
cout<<"*** 1.顺序创建单链表 ***"<<endl;
cout<<"*** 2.逆序创建单链表 ***"<<endl;
cout<<"*** 3.退出 ***"<<endl;
cout<<"***************************************************"<<endl;
cout<<endl;
do
{
cout<<"***************************************************"<<endl;
cout<<"Input choice:"<<endl;
cin>>choice;
switch(choice)
{
case 1:
create_list2(L2);
print_list(L2);
cout<<"***************************************************"<<endl;
break;
case 2:
create_list1(L1);
print_list(L1);
cout<<"***************************************************"<<endl;
break;
case 3:
cout<<"创建结束,再见!"<<endl;
cout<<"***************************************************"<<endl;
break;
}
}while(choice!=3);
return 0;
}