手工构造单链表。并利用该表类创建一个大小为4的整数线性表L(2,6,8,9);输出该表的当前长度;删除并输出第一个元素,输出该表及当前长度。C语言
时间: 2024-10-02 13:03:13 浏览: 30
在C语言中,你可以手工构造一个单链表通过定义结构体表示节点,并提供相应的函数操作列表。这里是一个简单的例子:
首先,我们定义一个链表节点结构体:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node* next;
} Node;
// 创建新节点
Node* createNode(int value) {
Node* newNode = (Node*)malloc(sizeof(Node));
if (!newNode) {
printf("Memory allocation failed.\n");
return NULL;
}
newNode->data = value;
newNode->next = NULL;
return newNode;
}
// 构造链表
void createLinkedList(Node** head, int arr[], int size) {
*head = NULL;
for (int i = 0; i < size; i++) {
Node* newNode = createNode(arr[i]);
if (*head == NULL) {
*head = newNode;
} else {
Node* current = *head;
while (current->next != NULL) {
current = current->next;
}
current->next = newNode;
}
}
}
// 输出链表长度
int getLength(Node* head) {
int length = 0;
while (head != NULL) {
length++;
head = head->next;
}
return length;
}
// 删除并输出第一个元素
void deleteFirstElement(Node** head) {
if (*head == NULL) {
printf("List is empty.\n");
return;
}
Node* temp = *head;
*head = (*head)->next;
free(temp);
printf("Deleted element: %d\n", temp->data);
}
int main() {
int arr[] = {2, 6, 8, 9};
int size = sizeof(arr) / sizeof(arr[0]);
Node* head = NULL;
createLinkedList(&head, arr, size);
printf("List with length: %d\n", getLength(head));
deleteFirstElement(&head);
printf("Updated list:\n");
// 输出链表可以添加一个遍历节点打印数据的函数
return 0;
}
```
在这个示例中,`createLinkedList`函数用于构建给定数组的链表,`getLength`计算链表的长度,`deleteFirstElement`删除并输出第一个元素。
运行上述程序,你会看到创建的链表、初始长度以及删除第一个元素后的更新链表。注意,由于这里未提供遍历链表并打印每个节点数据的功能,你需要自行添加这部分逻辑。
阅读全文