当前位置:实例文章 » 其他实例» [文章]第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频)

第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频)

发布人:shili8 发布时间:2024-11-19 10:25 阅读次数:0

**第一百零六天学习记录**

**数据结构与算法基础:单链表**

**王卓教学视频**

今天是我们学习的第106 天,主题是单链表。单链表是一种常见的线性数据结构,它们通过指针连接起来,每个结点包含一个值和一个指向下一个结点的指针。

### 单链表定义

ctypedef struct Node {
 int data;
 struct Node* next;
} Node;


在上面的代码中,我们定义了一个 `Node` 结构体,包含两个成员变量:`data` 和 `next`。其中,`data` 是结点的值,而 `next` 是指向下一个结点的指针。

### 单链表操作单链表支持以下基本操作:

* **插入**:在链表中插入一个新结点。
* **删除**:从链表中删除一个结点。
* **查找**:根据值找到链表中的某个结点。
* **遍历**:按照链表的顺序访问所有结点。

### 单链表实现下面是单链表的基本实现:

ctypedef struct Node {
 int data;
 struct Node* next;
} Node;

// 创建一个新结点Node* createNode(int data) {
 Node* newNode = (Node*)malloc(sizeof(Node));
 if (!newNode) {
 printf("Memory error
");
 return NULL;
 }
 newNode->data = data;
 newNode->next = NULL;
 return newNode;
}

// 插入结点void insertNode(Node** head, int data) {
 Node* newNode = createNode(data);
 if (*head == NULL) {
 *head = newNode;
 return;
 }
 Node* current = *head;
 while (current->next != NULL) {
 current = current->next;
 }
 current->next = newNode;
}

// 删除结点void deleteNode(Node** head, int data) {
 if (*head == NULL) return;

 // 如果删除的结点是头结点 if ((*head)->data == data) {
 Node* temp = *head;
 *head = (*head)->next;
 free(temp);
 return;
 }

 Node* current = *head;
 while (current->next != NULL) {
 if (current->next->data == data) {
 Node* temp = current->next;
 current->next = current->next->next;
 free(temp);
 return;
 }
 current = current->next;
 }
}

// 查找结点Node* findNode(Node* head, int data) {
 while (head != NULL) {
 if (head->data == data) {
 return head;
 }
 head = head->next;
 }
 return NULL;
}

// 遍历链表void traverseList(Node* head) {
 Node* current = head;
 while (current != NULL) {
 printf("%d ", current->data);
 current = current->next;
 }
 printf("
");
}


在上面的代码中,我们实现了单链表的基本操作,包括插入、删除、查找和遍历。

### 单链表应用单链表有很多实际应用:

* **缓存管理**:单链表可以用来管理缓存中的数据。
* **浏览器历史记录**:单链表可以用来保存浏览器的历史记录。
* **文件系统**:单链表可以用来组织文件系统中的文件。

### 总结本文介绍了单链表的基本概念、定义和实现。我们讨论了单链表支持的基本操作,包括插入、删除、查找和遍历。最后,我们看到了单链表在实际应用中的重要性。

**参考资料**

* 《数据结构与算法基础》王卓* 《C语言程序设计》周志明

其他信息

其他资源

Top