C/C++教程

C++结构体链表

本文主要是介绍C++结构体链表,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
struct ListNode 有它的内部数据“val”,它是一个int,因为它是一个列表节点,它包含一个指向下一个ListNode“next”的指针。
ListNode(int x): val(x), next(NULL){} 初始化当前节点为x,指针为空。

参考博文:https://www.cnblogs.com/songweiren/p/8735398.html

PNode CreateList(void) {
    int len;    //    用于定义链表长度
    int val;    //    用于存放节点数值
    PNode PHead = (PNode)malloc(sizeof(Node));    //    创建分配一个头节点内存空间
    //头节点相当于链表的哨兵,不存放数据,指向首节点(第一个节点)
    if (PHead == NULL)    //    判断是否分配成功
    {
        printf("空间分配失败 \n");
        exit(-1);
    }
    //指向链表尾部的指针,个人认为PTail是在栈空间上的,是一个辅助指针,用于连接新的节点
    PNode PTail = PHead;    //    链表的末尾节点,初始指向头节点
    PTail->Next = NULL;    //    最后一个节点指针置为空
    printf("请输入节点个数:");
    scanf("%d", &len);        //    输入节点个数
    for (int i = 0; i < len; i++) {

        PNode pNew = (PNode)malloc(sizeof(Node));    //    分配一个新节点
        if (pNew == NULL) {
            printf("分配新节点失败\n");
            exit(-1);
        }
        printf("请输入第 %d 个节点的数据:", i + 1);
        scanf_s("%d", &val);    //    输入链表节点的数据

        pNew->Element = val;    //    把数据赋值给节点数据域
        PTail->Next = pNew;    //    末尾节点指针指向下一个新节点,连接新的节点
        pNew->Next = NULL;        //    新节点指针指向为空
        PTail = pNew;    //    将新节点复制给末尾节点   ,将PTail指向尾节点    
    }
    printf("创建链表成功\n"
        );
    return PHead;    //    返回头节点
}
这篇关于C++结构体链表的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!