定义单链表,实现单链表的基本操作,c语言
时间: 2024-10-09 14:09:30 浏览: 23
基于C语言实现单链表的基本操作
在C语言中,单链表是一种线性的数据结构,每个节点包含两个部分:一个是存储数据的数据域(data),另一个是指向下一个节点的指针域(pointer)。定义单链表可以这样:
```c
typedef struct Node {
int data; // 节点的数据域
struct Node* next; // 指向下一个节点的指针
} Node;
```
接下来我们可以实现单链表的一些基本操作:
1. **创建新节点** (create a new node):
```c
Node* createNode(int value) {
Node* newNode = (Node*)malloc(sizeof(Node));
if (newNode != NULL) {
newNode->data = value;
newNode->next = NULL;
}
return newNode;
}
```
2. **添加节点到链表头部** (append to the beginning of the list):
```c
void insertAtBeginning(Node** head, int value) {
Node* newNode = createNode(value);
newNode->next = *head;
*head = newNode;
}
```
3. **添加节点到链表尾部** (append to the end of the list):
```c
void appendToList(Node** head, int value) {
Node* newNode = createNode(value);
if (*head == NULL) {
*head = newNode;
return;
}
Node* temp = *head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = newNode;
}
```
4. **删除节点** (delete a node by value):
```c
void deleteNodeByValue(Node** head, int value) {
Node* temp = *head, *prev = NULL;
while (temp != NULL && temp->data != value) {
prev = temp;
temp = temp->next;
}
if (temp != NULL) {
if (prev == NULL) { // 删除头节点
*head = temp->next;
} else {
prev->next = temp->next;
}
free(temp); // 释放内存
}
}
```
5. **遍历链表** (traverse the list):
```c
void printList(Node* head) {
Node* temp = head;
while (temp != NULL) {
printf("%d -> ", temp->data);
temp = temp->next;
}
printf("NULL\n");
}
```
阅读全文