C语言链表节点添加函数:AppendNode详解
这段代码是一个向链表中添加节点的函数,名为AppendNode。下面是每一行代码的解释:
-
struct Node* AppendNode(struct Node* CurrentNode, char* Bookname, int BookNumber, float Bookprice): 这是函数的定义,函数名为AppendNode,它接受四个参数:CurrentNode: 指向当前链表头节点的指针。Bookname: 新节点的书名,类型为字符数组。BookNumber: 新节点的书号,类型为整数。Bookprice: 新节点的书价,类型为浮点数。- 函数返回类型为
struct Node*,表示指向更新后链表头节点的指针。
-
struct Node* pnewNode = NULL;: 定义一个指向结构体Node的指针pnewNode,并初始化为NULL。这个指针用于存储新创建的节点。 -
struct Node* ptempNode = NULL;: 定义一个指向结构体Node的指针ptempNode,并初始化为NULL。这个指针用于遍历链表。 -
struct Node* pheadNode = CurrentNode;: 定义一个指向结构体Node的指针pheadNode,并将其指向当前链表头节点CurrentNode。 -
pnewNode = (struct Node*)malloc(sizeof(struct Node));: 使用malloc函数动态分配内存空间,用于存储新的节点。分配的空间大小为sizeof(struct Node),并将其强制转换为struct Node*类型,并将地址赋值给pnewNode指针。 -
if (pnewNode == NULL) { printf("mem error"); return pnewNode; }: 检查内存分配是否成功,如果pnewNode为NULL,说明内存分配失败,打印错误信息 "mem error",并返回NULL。 -
if (CurrentNode == NULL) { CurrentNode = pnewNode; }: 检查当前链表是否为空,如果为空,则将新节点pnewNode设置为链表头节点,并更新CurrentNode指针。 -
else { ... }: 如果当前链表不为空,则需要遍历链表找到最后一个节点,并将新节点添加到最后一个节点的next指针上。这部分代码需要补充完整。 -
return CurrentNode;: 返回更新后的链表头节点指针CurrentNode。
需要注意的是,这个函数的返回值是链表的头节点,因此在调用该函数时需要将链表的头节点作为参数传入。
原文地址: https://www.cveoy.top/t/topic/nK6H 著作权归作者所有。请勿转载和采集!