C语言链表基础知识总结
时间: 2023-07-01 20:22:07 浏览: 169
链表是一种常见的数据结构,C语言中也提供了链表的实现方式。链表由多个节点组成,每个节点包含数据和指向下一个节点的指针。链表的优点是可以动态地增加或删除节点,缺点是查找某个节点时需要遍历整个链表。
链表的基本操作包括创建链表,添加节点,删除节点和遍历链表。具体实现如下:
1. 创建链表
创建链表需要定义一个链表结构体,包含节点指针和链表长度等信息。示例代码如下:
```
typedef struct Node {
int data;
struct Node* next;
} Node;
typedef struct List {
Node* head;
int length;
} List;
List* createList() {
List* list = (List*) malloc(sizeof(List));
list->head = NULL;
list->length = 0;
return list;
}
```
2. 添加节点
添加节点需要先创建一个新节点,并将其加入链表末尾。示例代码如下:
```
void addNode(List* list, int data) {
Node* newNode = (Node*) malloc(sizeof(Node));
newNode->data = data;
newNode->next = NULL;
if (list->head == NULL) {
list->head = newNode;
} else {
Node* cur = list->head;
while (cur->next != NULL) {
cur = cur->next;
}
cur->next = newNode;
}
list->length++;
}
```
3. 删除节点
删除节点需要先找到要删除的节点,并将其从链表中移除。示例代码如下:
```
void deleteNode(List* list, int data) {
Node* cur = list->head;
Node* prev = NULL;
while (cur != NULL && cur->data != data) {
prev = cur;
cur = cur->next;
}
if (cur == NULL) {
return;
}
if (prev == NULL) {
list->head = cur->next;
} else {
prev->next = cur->next;
}
free(cur);
list->length--;
}
```
4. 遍历链表
遍历链表需要从头节点开始,依次访问每个节点的数据。示例代码如下:
```
void traverseList(List* list) {
Node* cur = list->head;
while (cur != NULL) {
printf("%d ", cur->data);
cur = cur->next;
}
printf("\n");
}
```
以上是C语言链表的基础操作,掌握这些知识可以让你更好地理解链表的实现原理。
阅读全文