c语言链表如果头链表不为空有数据如何创建
时间: 2024-03-13 07:39:12 浏览: 70
当头链表不为空有数据时,我们需要先创建一个新的结点,然后将新结点插入到头链表的前面,使其成为新的头结点。具体步骤如下:
1. 定义一个新的结点,并为其分配内存空间。
2. 将新结点的指针域指向原来的头结点。
3. 将头指针指向新结点。
下面是一个示例代码:
```c
struct Person *newNode = (struct Person*)malloc(sizeof(struct Person)); // 创建新结点并分配内存空间
newNode->next = head; // 将新结点的指针域指向原来的头结点
head = newNode; // 将头指针指向新结点
```
相关问题
c语言链表创建头节点
在C语言中,创建链表通常需要首先定义一个结构体作为链表节点,然后创建一个指向这个结构体类型的指针作为头节点。下面是一个简单的示例:
```c
// 定义链表节点结构体
typedef struct Node {
int data; // 节点的数据域
struct Node* next; // 指向下一个节点的指针
} Node;
// 创建头节点
Node* createHead() {
Node* head = (Node*)malloc(sizeof(Node)); // 分配内存给头节点
if (head != NULL) { // 如果分配成功
head->data = 0; // 初始化数据域(这里可以自定义)
head->next = NULL; // 链表初始时,头节点的下一个节点为空
} else {
printf("Memory allocation failed.\n");
return NULL;
}
return head;
}
```
在这个例子中,`createHead`函数用于初始化一个新的头节点,并将其返回。如果内存分配失败,会返回NULL。
c语言链表 写一个程序如果头链表不为空在头链表后输入新的链表
以下是C语言链表写一个程序如果头链表不为空在头链表后输入新的链表的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表结构体
struct Node {
int data;
struct Node* next;
};
// 在头结点后插入新结点
void insertAtEnd(struct Node** head_ref, int new_data) {
// 分配新结点的内存
struct Node* new_node = (struct Node*)malloc(sizeof(struct Node));
struct Node* last = *head_ref;
// 设置新结点的数据
new_node->data = new_data;
new_node->next = NULL;
// 如果链表为空,则将新结点设置为头结点
if (*head_ref == NULL) {
*head_ref = new_node; return;
}
// 遍历链表,找到最后一个结点
while (last->next != NULL) {
last = last->next;
}
// 将新结点插入到最后一个结点的后面
last->next = new_node;
return;
}
// 打印链表
void printList(struct Node* node) {
while (node != NULL) {
printf("%d ", node->data);
node = node->next;
}
}
int main() {
// 初始化链表头结点
struct Node* head = NULL;
// 在头结点后插入新结点
insertAtEnd(&head, 1);
insertAtEnd(&head, 2);
insertAtEnd(&head, 3);
// 打印链表
printf("链表内容为:");
printList(head);
return 0;
}
```
阅读全文