1、现单链表的主要基本操作,并写一个主程序验证;
代码
//1、现单链表的主要基本操作,并写一个主程序验证;
#include <iostream>
using namespace std;
typedef int ElemType;
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,* LinkList;
//算法2.6 初始化(构造一个空表 )
bool InitList_L(LinkList &L)
{
L=new LNode;
L->next=NULL;
return true;
}
//算法2.11前插法创建单链表
void CreateList_L(LinkList &L,int n){
LinkList p;
p=new LNode;
cin>>p->data;
L->next=p;
p->next=NULL;
for(int i=0;i<n-1;i++){
p=new LNode;
cin>>p->data;
p->next=L->next;
L->next=p;
}
}
//算法2.7单链表的取值
bool GetElem_L(LinkList L,int i,ElemType &e)
{
LinkList p;
int j=1;
p=L->next;
while(p&&j<i){
p=p->next;
++j;
}
if(!p||j>i) return false;
e=p->data;
return true;
}
//算法2.9 单链表的插入
bool ListInsert_L(LinkList &L,int i,ElemType e)
{
LinkList s; //指向插入的结点
LinkList p; //移动指针
p=L;
int j=0;
while(p&&j<i-1){
p=p->next;
++j;
}
if(!p||j>i-1) return false;
s=new LNode;
s->data=e;
s->next=p->next;
p->next=s;
return true;
}
//算法2.10 单链表的删除
bool ListDelete_L(LinkList &L,int i)
{
LinkList q,p;
int j=0;
p=L;
while(p->next&&j<i-1){
p=p->next;
++j;
}
if(!(p->next)||j>i-1)
return false;
q=p->next;
p->next=q->next;
delete q;
return true;
}
//后插法
void CreateList_R(LinkList &R,int n)
{
LinkList p,tail;
p=tail=R;
for(int i=0;i<n;++i){
p=new LNode;
cin>>p->data;
tail->next=p;
tail=tail->next;
p->next=NULL;
}
}
//打印链表
void PrintList_L(LinkList L)
{
LinkList p;
p=L->next;
while(p){
cout<<p->data<<" ";
p=p->next;
}
cout<<endl;
}
int main()
{
LinkList L;
InitList_L(L); //初始化
CreateList_L(L,5);//前插法
cout<<"Your LinkList(L) is:"<<endl;
PrintList_L(L);//输出链表,验证结果
ElemType element;
GetElem_L(L,5,element);//取值
cout<<"Element geted is: "<<element<<endl; //验证结果
ListInsert_L(L,5,9999);//插入
cout<<"After inserting, your LinkList(L) is:"<<endl;
PrintList_L(L);//输出链表,验证结果
ListDelete_L(L,5);//删除
cout<<"After deleting, your LinkList(L) is:"<<endl;
PrintList_L(L);//输出链表,验证结果
LinkList R;
InitList_L(R);
CreateList_R(R,5);//后插法
cout<<"your LinkList(R) is:"<<endl;
PrintList_L(R);//输出链表,验证结果
return 0;
}
Sample Input & Sample Output
1 2 3 4 5
Your LinkList(L) is:
5 4 3 2 1
Element geted is: 1
After inserting, your LinkList(L) is:
5 4 3 2 9999 1
After deleting, your LinkList(L) is:
5 4 3 2 1
1 2 3 4 5
your LinkList(R) is:
1 2 3 4 5