美文网首页
C语言之链表的实现

C语言之链表的实现

作者: 冰三尺 | 来源:发表于2017-09-02 08:55 被阅读13次
#include <stdio.h>
#include <stdlib.h> //包含了malloc

typedef struct Node {
    int data; //数据域
    struct Node *next; //指针域
}NODE, *PNODE;  //NODE 等价于struct Node, PNODE等价于struct Node *

PNODE create_list(void);
void traverse_list(PNODE phead);

int main(int argc, const char * argv[]) {

    PNODE pHead = NULL; //等价于struct Node *pHead = NULL
    
    pHead = create_list(); //创建一个非循环链表, 并将该链表的投节点的地址赋值给头结点
    traverse_list(pHead); //
    return 0;
}

PNODE create_list(void) {
    
    //分配了一个不存放数据的头结点
    PNODE pHead = (PNODE)malloc(sizeof(NODE));
    if (pHead == NULL) {
        printf("分配失败");
        exit(-1);
    }
    int len;
    printf("请输入你要生成的链表节点的个数: ");
    scanf("%d", &len);
    
    int i; //存放有效节点的个数
    int value; //用来临时存放用户输入的节点的值
    PNODE pTail = pHead;
    pTail->next = NULL;
    
    for (i = 0; i < len; i++) {
        printf("请输入第%d个节点的值: ", i + 1);
        scanf("%d", &value);
        
        PNODE pNew = (PNODE)malloc(sizeof(NODE));
        if (pNew == NULL) {
            printf("程序分配失败");
            exit(-1);
        }
        pNew->data = value;
        pTail->next = pNew;
        pNew->next = NULL;
        pTail = pNew; //pTail始终指向为节点
    }
    return pHead;
}

void traverse_list(PNODE phead) {
    PNODE p = phead->next;

    while (p != NULL) {
        printf("%d  ", p->data);
        p = p->next;
    }
    printf("\n");
    return;
}

相关文章

  • C语言之链表的实现

  • 链表

    单链表 C实现 Java实现 双链表 C实现 Java实现

  • 0225. Implement Stack using Queu

    *LeetCode 225. Implement Stack using Queues用队列来实现链表,对于C语...

  • C语言之链表

    数组:方便访问,不方便插入删除链表:不必连续,定义链表,节点定义,结构体构造,生成链表和动态机制,进行链表的三个操...

  • Java实现简单的链表-面向初学者

    很久之前用C语言实现过链表,现在已经太久没用C语言。就先用JAVA实现一个简单链表好了,还是使用最原始的C语言实现...

  • C++实现双向循环链表

    本次博文是关于利用C++模板的方式实现的双向循环链表以及双向循环链表的基本操作,在之前的博文C++语言实现双向链表...

  • c++ 实现队列

    相关资料: 用C++实现一个队列 数据结构代码实现之队列的链表实现(C/C++)

  • Redis 源码--链表。

    因为C语言是一个比较底层的语言,库内没有实现链表,于是Redis自己实现了链表。Redis的链表是一个双向链表。 ...

  • LeetCode 141 环形链表 Linked List Cy

    有关链表的LeetCode做题笔记合集,Python实现 链表定义 141. 环形链表 Linked List C...

  • C++语言实现双向链表

    这篇文章是关于利用C++模板的方式实现的双向链表以及双向链表的基本操作,在之前的博文C语言实现双向链表中,已经给大...

网友评论

      本文标题:C语言之链表的实现

      本文链接:https://www.haomeiwen.com/subject/tkmljxtx.html