C語言經典算法100例-073-鏈表逆序插入節點

思路如下:先建立一個尾節點,然後從每次插入時新建一個新節點。這個最好自己畫個圖,就明白這些操作時咋來了:畫吧少年,畫完你就明白了

看代碼:

//從後往前向鏈表中插入元素 
#include <stdio.h>
#include <stdlib.h>

//定義鏈表結構
struct list
{
    int data;
    struct list *next;
};
typedef struct list node;
typedef node *link;

int main()
{
    link head;  //頭指針
    link tail;  //尾指針
    link ptr;   //當前指針

    int i,num;  //下標與元素值

    //初始化鏈表 這裏是一個只含有尾指針的鏈表
    tail = (link)malloc(sizeof(node));
    tail->next = NULL;
    ptr = tail; //當前指針先指向尾指針

    //向鏈表中插入元素
    printf("Input 5 numbers:\n");
    for (i = 0; i < 5; ++i)
    {
        scanf("%d", &num);
        ptr->data = num;    //當前節點data賦值
        head = (link)malloc(sizeof(node));  //開闢一個頭結點
        head->next = ptr;   //頭結點指向當前節點
        ptr = head;         //當前指針指向頭結點
    }
    ptr = ptr->next;    //跳過頭結點輸出
    //輸出鏈表
    while (ptr != NULL)
    {
        printf("%d\n", ptr->data);
        ptr = ptr->next;

    }

    return 0;
}


發佈了86 篇原創文章 · 獲贊 35 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章