嚴版數據結構 第29頁 單鏈表 C++實現

#include<iostream>
using namespace std;


typedef struct LNode
{
     int data;   //節點數據域
     struct LNode *next;  //指針域  、鏈域   
} LNode,  *LinkList;


bool CreatList_L(LinkList &L,int n)
{
     L=new LNode;   //創建一個頭結點   
     if(!L)exit(-1);//如果分配失敗,退出程序 
     L->next=NULL;
     L->data=n;  //存儲鏈表的長度 
     LinkList p=L;    //指向節點的指針 
     while(n--)
     {
          p->next=new LNode; //開闢新節點 
          p=p->next;         //p後移 
          cin>>p->data;      //輸入 
          p->next=NULL;
     }
     return 0; 
}


bool ListInsert_L(LinkList L,int i, int e)
{
     LinkList p;
     p=L;
     if(i<1 || i>L->data )
     {
          cout<<"位置不合法 !"<<endl;
          return 1; //位置不合法,不作任何操作  
     }
     else 
     {
          LinkList q;
          q=new LNode;           //創建要插入的節點 
          q->data=e;
          q->next=NULL;
          
          for(int j=1;j<i;++j)  //循環找到插入的位置 
               p=p->next;
          q->next=p->next;      //進行插入 
          p->next=q;
          L->data+=1;           //鏈表長度加1 
     }
}


bool ListDelete_L(LinkList L,int i,int &e)
{
     if(i<1 || i>L->data)
     {
          cout<<"位置不合法 !"<<endl;
          return 1; 
     }
     else
     {
          LinkList p=L,q;
          for(int j=1;j<i;++j)
              p=p->next;
          e=p->next->data;
          q=p->next;
          p->next=p->next->next;
          delete q;
          L->data-=1;
          return 0;
     }
}


bool GetElem_L(LinkList L,int i, int &e)
{
     if(i<1 || i>L->data)
     {
          cout<<"位置不合法 !"<<endl;
          return 1;
     }
     else
     {
          LinkList p=L;
          for(int j=1;j<=i;++j)
               p=p->next;
          e=p->data;
          return 0;
     }





int main()
{
    LinkList L;  //頭指針 
    int i=3,e=22,n=5;
    CreatList_L(L,n);
    GetElem_L(L,i,e);
    cout<<e<<endl;
    ListInsert_L(L,i,e);
    cout<<e<<endl;
    ListDelete_L(L,i,e);
    cout<<e<<endl;
    system("pause");
    return 0;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章