实验说明头指针,头结点,首元结点的区别代码
时间: 2024-04-22 15:26:12 浏览: 97
以下是使用C语言来进行实验,展示头指针、头结点和首元结点的区别的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构体
typedef struct Node {
int data;
struct Node* next;
} Node;
// 实验头指针
void headPointerExperiment() {
Node* head = NULL; // 头指针初始化为空指针
// 插入节点
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = 1;
newNode->next = NULL;
head = newNode;
// 删除节点
free(head);
head = NULL;
}
// 实验头结点
void headNodeExperiment() {
Node* head = (Node*)malloc(sizeof(Node));
head->next = NULL; // 头结点初始化,不存储有效数据
// 插入节点
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = 1;
newNode->next = head->next;
head->next = newNode;
// 删除节点
Node* firstNode = head->next;
head->next = firstNode->next;
free(firstNode);
}
// 实验首元结点
void firstNodeExperiment() {
Node* head = NULL; // 头指针初始化为空指针
// 插入首元节点
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = 1;
newNode->next = NULL;
head = newNode;
// 插入其他节点
Node* secondNode = (Node*)malloc(sizeof(Node));
secondNode->data = 2;
secondNode->next = NULL;
newNode->next = secondNode;
// 删除首元节点
Node* firstNode = head;
head = firstNode->next;
free(firstNode);
}
int main() {
printf("头指针实验:\n");
headPointerExperiment();
printf("\n头结点实验:\n");
headNodeExperiment();
printf("\n首元结点实验:\n");
firstNodeExperiment();
return 0;
}
```
这段代码演示了头指针、头结点和首元结点的区别。在头指针实验中,我们使用头指针来表示链表的起始位置;在头结点实验中,我们在链表第一个节点之前添加了一个头结点,并通过头结点方便地进行插入和删除操作;在首元结点实验中,我们直接使用首元节点来表示链表的第一个有效节点,并进行插入和删除操作。
请注意,在实际应用中,需要根据具体需求来选择使用头指针、头结点还是首元结点。
阅读全文