C语言经典算法100例-073-链表逆序插入节点

来源:互联网 发布:mac os 10.6 dmg下载 编辑:程序博客网 时间:2024/05/17 06:19

思路如下:先建立一个尾节点,然后从每次插入时新建一个新节点。这个最好自己画个图,就明白这些操作时咋来了:画吧少年,画完你就明白了

看代码:

//从后往前向链表中插入元素 #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;}


0 0