鏈表之循環單鏈表(用C語言描述)


上回說到建立鏈表的三種形式,分別是頭插法,尾插法,和尾插法MAX😂

👇下面講一下循環單鏈表👇

循環單鏈表,字面意思,就是單鏈表循環了起來,尾節點在輸入結束后不會指向NULL,而是指向了頭節點head

醬紫,鏈表就循環了起來

下面是代碼實現

#include <stdio.h>

#include <stdlib.h>

typedef char datatype;

typedef struct node

{

    datatype data;

    struct node *next;

    int length;

}linkList;

 

linkList *CREAT(linkList *L)

{

    L->length = 0;

    linkList *head,*r,*s;

    head = (linkList *)malloc(sizeof(linkList));

    r = head;

    char ch;

    ch = getchar();

    while(ch!='$')

    {

        s = (linkList *)malloc(sizeof(linkList));

        L->length++;

        s->data = ch;

        r->next = s;

        r = s;

        s->next = head;

//        char a = getchar();

//        如果使用上面這一句,在輸入data的時候可以在兩個字符間輸入空格

        ch = getchar();

    };

    return r;

}

 

void PUT(linkList *L,linkList *r)

{

    int i = 0;

    linkList *pt;

    pt = r;

    pt = pt->next->next;

    while(i<L->length)

//如果你想測試一下自己寫的代碼會不會循環起來,可以給length+2以上,看看會不會輸出

//因為在CREAT()的時候,我是用的是尾插法MAX😂,就是在整個鏈表的前面加上一個空的節點,所以輸出不會顯示這個節點的內容

    {

        printf("%c ",pt->data);

        pt = pt->next;

        i++;

    };

    printf("\n");

}

 

int main(void)

{

    linkList L;

    PUT(&L,CREAT(&L));

    return 0;

}

//這個代碼的算法實現都是比較簡單易懂的,如果不是很清楚鏈表是怎樣構建的話,可以康一康我的上一篇blog

//希望能對初學數據結構的同學們有一點幫助


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM