📅  最后修改于: 2023-12-03 14:40:23.766000             🧑  作者: Mango
在 C 编程语言中,我们可以使用指针数据类型来动态创建新的节点。
首先,我们需要定义一个节点结构体,用于表示节点的数据和指向下一个节点的指针。
typedef struct node {
int data;
struct node *next;
} Node;
以上代码使用 typedef
关键字定义了一个 struct node
的别名 Node
,方便我们以后使用。
这个结构体包含两个成员变量:
data
:表示当前节点保存的数据next
:指向下一个节点的指针现在,我们可以通过 malloc()
函数动态创建一个新节点,并将数据填入其中。最后,将新节点的 next
指针设置为 NULL
。
Node *newNode = (Node*)malloc(sizeof(Node));
newNode->data = 10;
newNode->next = NULL;
以上代码创建了一个新的节点,并将 data
成员设置为 10
,next
成员设置为 NULL
。需要注意的是,我们需要将 malloc()
返回的指针转换为 Node*
类型。
现在,我们可以将新节点插入到链表中了。比如,我们有一个链表头节点 head
,需要将新节点插入到它的后面。则可以使用以下代码:
newNode->next = head->next;
head->next = newNode;
以上代码将新节点的 next
指针指向原链表的第二个节点(如果有),然后将链表头的 next
指针修改为新节点。
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
int data;
struct node *next;
} Node;
int main() {
Node *head = (Node*)malloc(sizeof(Node));
head->data = 0;
head->next = NULL;
Node *newNode = (Node*)malloc(sizeof(Node));
newNode->data = 10;
newNode->next = NULL;
newNode->next = head->next;
head->next = newNode;
return 0;
}
以上代码创建了一个链表头节点 head
,然后创建了一个新节点 newNode
,最后将 newNode
插入到 head
后面。