c语言链表 写一个程序如果头链表不为空在头链表后输入新的节点
时间: 2024-03-13 15:39:12 浏览: 18
以下是C语言实现在头链表后插入新节点的程序:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表结构体
struct Node {
int data;
struct Node* next;
};
// 在头链表后插入新节点
void insertAtBeginning(struct Node** head_ref, int new_data) {
// 为新节点分配内存
struct Node* new_node = (struct Node*)malloc(sizeof(struct Node));
// 将新节点的数据设置为传入的数据
new_node->data = new_data;
// 将新节点的next指向头结点
new_node->next = (*head_ref);
// 将头结点指向新节点
(*head_ref) = new_node;
}
int main() {
// 初始化链表
struct Node* head = NULL;
// 在头链表后插入新节点
insertAtBeginning(&head, 10);
// 输出链表中的数据
printf("链表中的数据为:%d", head->data);
return 0;
}
```
相关问题
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;
}
```
c语言链表如果头链表不为空有数据如何创建
当头链表不为空有数据时,我们需要先创建一个新的结点,然后将新结点插入到头链表的前面,使其成为新的头结点。具体步骤如下:
1. 定义一个新的结点,并为其分配内存空间。
2. 将新结点的指针域指向原来的头结点。
3. 将头指针指向新结点。
下面是一个示例代码:
```c
struct Person *newNode = (struct Person*)malloc(sizeof(struct Person)); // 创建新结点并分配内存空间
newNode->next = head; // 将新结点的指针域指向原来的头结点
head = newNode; // 将头指针指向新结点
```