日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

C語言單向鏈表的實現(xiàn)

 隨身Book 2013-11-23

一個簡單結(jié)點的結(jié)構(gòu)體表示為:

    struct note

    {

       int  data;              /*數(shù)據(jù)成員可以是多個不同類型的數(shù)據(jù)*/

       struct  note  *next;      /*指針變量成員只能是-個*/

    };

 

一個簡單的單向鏈表的圖示

 

1.鏈表是結(jié)構(gòu)、指針相結(jié)合的-種應用,它是由頭、中間、尾多個鏈環(huán)組成的單方向可伸縮的鏈表,鏈表上的鏈環(huán)我們稱之為結(jié)點。

2.每個結(jié)點的數(shù)據(jù)可用-個結(jié)構(gòu)體表示,該結(jié)構(gòu)體由兩部分成員組成:數(shù)據(jù)成員與結(jié)構(gòu)指針變量成員。

3.數(shù)據(jù)成員存放用戶所需數(shù)據(jù),而結(jié)構(gòu)指針變量成員則用來連接(指向)下-個結(jié)點,由于每-個結(jié)構(gòu)指針變量成員都指向相同的結(jié)構(gòu)體,所以該指針變量稱為結(jié)構(gòu)指針變量。

4.鏈表的長度是動態(tài)的,當需要建立-個結(jié)點,就向系統(tǒng)申請動態(tài)分配-個存儲空間,如此不斷地有新結(jié)點產(chǎn)生,直到結(jié)構(gòu)指針變量指向為空(NULL)。申請動態(tài)分配-個存儲空間的表示形式為:

           (struct  note*)malloc(sizeof(struct  note))

 

鏈表的建立

   在鏈表建立過程中,首先要建立第一個結(jié)點,然后不斷地

在其尾部增加新結(jié)點,直到不需再有新結(jié)點,即尾指針指向

NULL為止。

 設有結(jié)構(gòu)指針變量   struct note *p,*p1,*head;

      head:用來標志鏈表頭

  p:在鏈表建立過程中,p總是不斷先接受系統(tǒng)動態(tài)分配的新結(jié)點地址。

  p1->next:存儲新結(jié)點的地址。

 

鏈表建立的步驟:

第一步:建立第一個結(jié)點

struct   node

{

    int   data;

    struct   node  *next;

 };

struct   note   *p,*p1,*head;

head=p1=p=(struct  node  *)malloc(sizeof(struct node);

 

第二步:

      給第-個結(jié)點成員data賦值并產(chǎn)生第二個結(jié)點

scanf(“%d”,&p->data);  /*輸入10*/

p=(struct  node  *)malloc(sizeof(struct node);

 

第三步:將第-個結(jié)點與第二個結(jié)點連接起來

p1-> next=p;

 

第四步:產(chǎn)生第三個結(jié)點

p1=p;

scanf(“%d”,&p->data);/*輸入8*/

p=(struct  node  *)malloc(sizeof(struct node);

以后步驟都是重復第三、四步,直到給出-個結(jié)束條件,不再建新的結(jié)點時,要有

   p->next=NULL;它表示尾結(jié)點。

 

 

代碼

  1. #include <stdio.h>  
  2. #include<stdlib.h>  
  3. #define  LEN  sizeof(struct node)  
  4. struct node  
  5. {  
  6. int data;  
  7. struct node  *next;  
  8. };  
  9. main()  
  10. {     struct  node  *p, *pl,* head;  
  11.           head=p=(struct node * )malloc(LEN);  
  12.           scanf("%d",&p->data);/*頭結(jié)點的數(shù)據(jù)成員*/  
  13.           while(p->data!=0)   /*給出0結(jié)束條件,退出循環(huán)*/  
  14.           {    pl=p;  
  15.                p=(struct node * )malloc(LEN);  
  16.                   scanf("%d",&p->data);/*中間結(jié)點數(shù)據(jù)成員*/  
  17.                   pl->next=p;/*中間結(jié)點的指針成員值*/  
  18.           }  
  19.           p-> next=NULL;/*尾結(jié)點的指針成員值*/  
  20.           p=head;/*鏈表顯示*/  
  21.           printf("鏈表數(shù)據(jù)成員是:");  
  22.           while(p->next!=NULL)  
  23.           {  
  24.           printf("%d",p->data);  
  25.           p=p->next;  
  26.           }  
  27.           printf("%d\n",p->data);  
  28. }  

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多