用C/C++语言编程实现建立一个单链表,并实现下列功能(每个功能独立成函数)。 1.初始化一个带有头结点的单链表。 2.采用头插法建立单链表。 3.采用尾插法建立单链表。 4. 判断链表是否为空。 5. 计算链表的长度。 6. 输出链表的内容。
时间: 2024-10-20 18:14:22 浏览: 36
在C/C++中,我们可以使用结构体和指针来实现单链表。首先,定义一个表示节点的结构体:
```c++
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构体
struct Node {
int data;
struct Node* next;
};
// 初始化一个带头结点的单链表
struct Node* createList() {
struct Node* head = (struct Node*)malloc(sizeof(struct Node));
if (head == NULL) {
printf("Memory allocation failed.\n");
return NULL;
}
head->data = 0; // 初始化头节点数据为0
head->next = NULL;
return head;
}
// 头插法建立单链表
void insertAtHead(struct Node** head, int value) {
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
if (newNode == NULL) {
printf("Memory allocation failed.\n");
return;
}
newNode->data = value;
newNode->next = *head;
*head = newNode;
}
// 尾插法建立单链表
void insertAtTail(struct Node** head, int value) {
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
if (newNode == NULL) {
printf("Memory allocation failed.\n");
return;
}
newNode->data = value;
if (*head == NULL) {
*head = newNode;
return;
}
struct Node* temp = *head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = newNode;
}
// 判断链表是否为空
int isListEmpty(struct Node* head) {
return head == NULL;
}
// 计算链表的长度
int getLinkedListLength(struct Node* head) {
int length = 0;
struct Node* current = head;
while (current != NULL) {
length++;
current = current->next;
}
return length;
}
// 输出链表内容
void printList(struct Node* head) {
struct Node* temp = head;
while (temp != NULL) {
printf("%d -> ", temp->data);
temp = temp->next;
}
printf("NULL\n");
}
```
现在你可以分别调用这些函数来操作单链表了。例如:
```c++
int main() {
struct Node* head = createList();
// 使用insertAtHead, insertAtTail添加元素到链表
// 使用isListEmpty检查链表是否为空
// 使用getLinkedListLength获取链表长度
// 使用printList打印链表内容
free(head); // 在完成操作后释放内存
return 0;
}
```
阅读全文