C语言链表操作完整代码
时间: 2024-11-20 09:29:33 浏览: 3
c语言 链表基本操作代码
在C语言中,链表是一种常见的数据结构,它由一系列节点组成,每个节点包含数据域和指针域,用于指向下一个节点。以下是一个简单的单向链表的基本操作代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构体
typedef struct Node {
int data; // 节点的数据域
struct Node* next; // 指针域,指向下一个节点
} Node;
// 创建新节点函数
Node* createNode(int data) {
Node* newNode = (Node*)malloc(sizeof(Node));
if (!newNode) {
printf("Memory allocation failed.\n");
return NULL;
}
newNode->data = data;
newNode->next = NULL;
return newNode;
}
// 插入节点到链表头部
void insertAtBeginning(Node** head, int data) {
Node* newNode = createNode(data);
if (newNode != NULL) {
newNode->next = *head;
*head = newNode;
printf("Inserted %d at the beginning of the list.\n", data);
} else {
printf("Could not insert node.\n");
}
}
// 在链表尾部插入节点
void insertAtEnd(Node** head, int data) {
Node* newNode = createNode(data);
if (newNode == NULL) {
printf("Could not create new node.\n");
} else if (*head == NULL) {
*head = newNode;
} else {
Node* temp = *head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = newNode;
printf("Inserted %d at the end of the list.\n", data);
}
}
// 打印链表
void printList(Node* head) {
if (head == NULL) {
printf("List is empty.\n");
} else {
Node* temp = head;
while (temp != NULL) {
printf("%d -> ", temp->data);
temp = temp->next;
}
printf("NULL\n");
}
}
int main() {
Node* head = NULL;
// 示例操作
insertAtBeginning(&head, 5);
insertAtEnd(&head, 10);
printList(head); // 输出:5 -> 10 -> NULL
return 0;
}
```
在这个代码中,我们首先定义了一个链表节点结构体`Node`,然后实现了创建新节点、在链表头尾插入节点以及打印链表的功能。注意这里通过`Node**`类型的指针传递链表头,可以修改链表的实际内容。
阅读全文