单链表数据结构构建c语言
时间: 2023-08-24 21:04:55 浏览: 103
数据结构单链表(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));
newNode->data = data;
newNode->next = NULL;
return newNode;
}
// 在链表尾部添加一个节点
void append(Node** headRef, int data) {
Node* newNode = createNode(data);
Node* last = *headRef;
if (*headRef == NULL) {
*headRef = newNode;
return;
}
while (last->next != NULL) {
last = last->next;
}
last->next = newNode;
return;
}
// 在链表头部插入一个节点
void prepend(Node** headRef, int data) {
Node* newNode = createNode(data);
newNode->next = *headRef;
*headRef = newNode;
return;
}
// 删除第一个匹配的节点
void deleteNode(Node** headRef, int key) {
Node* temp = *headRef;
Node* prev = NULL;
if (temp != NULL && temp->data == key) {
*headRef = temp->next;
free(temp);
return;
}
while (temp != NULL && temp->data != key) {
prev = temp;
temp = temp->next;
}
if (temp == NULL) {
return;
}
prev->next = temp->next;
free(temp);
return;
}
// 打印链表
void printList(Node* node) {
while (node != NULL) {
printf("%d ", node->data);
node = node->next;
}
printf("\n");
}
// 主函数测试链表
int main() {
Node* head = NULL;
append(&head, 6);
append(&head, 8);
prepend(&head, 2);
printList(head);
deleteNode(&head, 6);
printList(head);
return 0;
}
```
在上面的代码示例中,我们首先定义了一个节点结构体 `Node`,其中包含一个数据元素 `data` 和一个指向下一个节点的指针 `next`。然后,我们定义了几个基本的操作函数,包括创建一个新节点 `createNode`、在链表尾部添加一个节点 `append`、在链表头部插入一个节点 `prepend`、删除第一个匹配的节点 `deleteNode`,以及打印链表 `printList`。在主函数中,我们测试了这些操作函数的效果。
阅读全文