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