• 数据结构-链表C语言实现


    #include <stdio.h>

    #include <stdlib.h>

    typedef struct Node

    {

        int data;//数据域

        struct Node * pNext;//指针域

    }NODE, *PNODE;

    PNODE create_list(void){

        int len;//用来存放有效节点的个数

        int i;//用来临时存放用户输入的节点的值

        int val;//节点的值

        

        PNODE pHead = (PNODE)malloc(sizeof(NODE));

        if (NULL == pHead) {

            printf("分配失败,程序终止!");

            exit(-1);

        }

        printf("请输入您要输入的链表个数");

        scanf("%d",&len);

        PNODE pTail = pHead;

        pTail->pNext = NULL;//pTail永远指向尾节点

        

        for (i=0; i<len; ++i){

            printf("请输入第%d个节点的值:",i+1);

            scanf("%d",&val);

            PNODE pNew = (PNODE)malloc(sizeof(NODE));

            if (NULL == pNew)

            {

                printf("分配失败,程序终止!");

                exit(-1);

            }

            pNew->data = val;

            pTail->pNext = pNew;

            pNew->pNext = NULL;

            pTail = pNew;

        }

        return pHead;

    }

    void traver_list(PNODE pHead){

        PNODE pTmp = pHead;//设置一个临时的节点用于遍历

        while (1) {

            if (pTmp->pNext == NULL) {

                return;

            }

            printf("%d",pTmp->pNext->data);

            pTmp->pNext = pTmp->pNext->pNext;

        }

    }

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

        PNODE pHead = NULL;//等价于 struct Node *pHead = NULL;

        pHead = create_list();//创建一个非循环单链表并把首地址付给pHead

        traver_list(pHead);//遍历一遍链表

        return 0;

    }

  • 相关阅读:
    互斥锁的通俗理解
    U-Boot下分区信息查看
    《计算机组成原理》唐朔飞第二版_笔记
    《大话程序员》安晓辉_笔记
    C++ 类对象的初始化顺序
    FilterTerminal使用说明全总结
    sed -i 命令常用方法总结
    入园记录
    cookies,sessionStorage 和 localStorage区别
    优雅降级和渐进增强的理解:
  • 原文地址:https://www.cnblogs.com/fanxinguu/p/4826837.html
Copyright © 2020-2023  润新知