02-單連結串列的操作

成强發表於2024-06-30

單連結串列的建立:頭插法

#include <stdio.h>
#include <malloc.h>
#include <stdbool.h>



typedef int ElemType;
/*定義一個單連結串列*/
typedef struct LNode{
    ElemType data;
    /*下一個元素的地址指標*/
    struct LNode *next;
} LNode,*LinkList;

/**
 *單連結串列的建立
 * @return
 */
LinkList CreateListByHead(LinkList L){
    /*中間指標 */
    LNode  *s;
    /*存入的元素*/
    int x;
    /*建立頭節點:申請空間*/
    L=(LinkList) malloc(sizeof (LNode));
    /*對頭結點進行初始化:*/
    L->next=NULL;
    /*讀取傳入的元素*/
    scanf("&d",&x);
    while (x !=999){
        /*建立新的節點*/
        s = (LinkList) malloc(sizeof(LNode));
        s->data=x;
        /*中間指標儲存的地址為:頭指標的地址*/
        s->next = L->next;
        /*重新設定 頭結點儲存的指標:為插入元素的地址*/
        L->next=s;
        scanf("%d",&x);
    }
    /*返回頭節點*/
    return  L;
}



int main()
{

    LinkList L;
    CreateListByHead(L);

    return 0;
}


單連結串列的建立:尾插法

#include <stdio.h>
#include <malloc.h>
#include <stdbool.h>


typedef int ElemType;
/*定義一個單連結串列*/
typedef struct LNode{
    ElemType data;
    /*下一個元素的地址指標*/
    struct LNode *next;
} LNode,*LinkList;

/**
 *單連結串列的建立: 使用尾插法
 * @return
 */
LinkList CreateListByTail(LinkList L){
    /*中間指標 */
    LNode  *s;
    /*存入的元素*/
    int x;
    /*建立頭結點:申請空間*/
    L=(LinkList) malloc(sizeof (LNode));
    L->next=NULL;
    //初始化尾結點:只有一個頭結點=尾節點
    LNode *r=L;

    /*讀取傳入的元素*/
    scanf("&d",&x);
    while (x !=999){
        /*建立新的節點*/
        s = (LinkList) malloc(sizeof(LNode));
        s->data=x;
        /*更新當前r指標上的元素 儲存的下一個地址指標*/
        r->next=s;
        /*更新尾節點的元素地址:為新插入的元素地址*/
        r=s;
        scanf("%d",&x);
    }
    /*插入完成:尾巴置空*/
    r->next=NULL;
    /*返回頭結點*/
    return  L;


}




int main()
{

    LinkList L;
    CreateListByTail(L);

    return 0;
}


相關文章