pta单链表基本操作
时间: 2024-12-27 16:29:47 浏览: 8
### 关于PTA平台上单链表基本操作
#### 头插法创建链表
头插法是一种常见的链表构建方法,在这种方法中每次新插入的节点都放在链表头部。下面是一个简单的例子来展示如何通过头插法建立一个链表以及相应的显示函数。
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct LNode {
int data;
struct LNode *next;
} LinkList;
// 插入数据到链表头部
void InsertToHead(LinkList **head, int value) {
LinkList *new_node = (LinkList *)malloc(sizeof(LinkList));
new_node->data = value;
new_node->next = (*head);
(*head) = new_node;
}
// 显示链表内容
void DispLinkList(LinkList *linklist) {
while(linklist != NULL){
printf("%d ", linklist->data);
linklist = linklist->next;
}
}
```
此代码展示了如何利用C语言实现头插法创建链表,并提供了一个用于打印链表内所有元素的方法[^1]。
#### 尾插法创建链表
对于尾插法而言,则是在链表末端追加新的节点,这种方式更适合顺序访问场景下的高效插入操作。这里给出一段示范性的代码片段:
```c
void InsertToTail(LinkList **tail, int value) {
LinkList *new_node = (LinkList *)malloc(sizeof(LinkList));
new_node->data = value;
new_node->next = NULL;
if(*tail == NULL){ // 如果当前为空列表则初始化头结点
*tail = new_node;
(*tail)->next = new_node;
}else{
(*tail)->next = new_node;
*tail = new_node;
}
}
```
上述实现了向已存在的非空链表末尾添加新节点的功能;当处理的是第一个被加入的新节点时会特别对待以完成初始设置。
#### 销毁链表
为了释放之前分配给各个节点的空间资源,可以采用遍历整个链表的方式逐一回收内存空间:
```c
void DestroyLinkList(LinkList **head) {
LinkList *current = *head;
LinkList *temp;
while(current != NULL){
temp = current;
current = current->next;
free(temp);
}
*head = NULL;
}
```
这段程序能够安全地清理掉由`malloc()`动态申请出来的全部存储单元,防止出现内存泄漏问题。
阅读全文