初始化,生成线性表3 55 2 9 7 32 66,遍历输出线性表; 将你学号后三位数值插入到第3个位置,遍历输出线性表; 将第5个元素删除,遍历输出线性表和被删除元素。使用c语言
时间: 2024-09-18 16:04:47 浏览: 78
数据结构课件:第2章 线性表.ppt
首先,我们创建一个简单的动态数组(线性表),然后按照指令进行操作:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义结构体表示节点
typedef struct Node {
int data;
struct Node* next;
} Node;
// 创建线性表并初始化
void initList(Node** head, int arr[], int size) {
*head = (Node*)malloc(sizeof(Node));
(*head)->data = arr[0];
(*head)->next = NULL;
for (int i = 1; i < size; ++i) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = arr[i];
newNode->next = *head;
*head = newNode;
}
}
// 遍历线性表
void printList(Node* head) {
while (head != NULL) {
printf("%d ", head->data);
head = head->next;
}
printf("\n");
}
int main() {
// 初始化线性表
int arr[] = {3, 55, 2, 9, 7, 32, 66};
Node* head = NULL;
initList(&head, arr, sizeof(arr)/sizeof(arr[0]));
// 将学号后三位数值插入第3个位置
int newNumber = 123; // 假设学号为12345,后三位为123
Node* thirdNode = head->next;
if (thirdNode) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = newNumber;
newNode->next = thirdNode->next;
thirdNode->next = newNode;
} else {
printf("无法插入,因为列表中只有两个元素。\n");
}
// 遍历输出线性表
printf("After insertion:\n");
printList(head);
// 删除第5个元素
if (head->next && head->next->next) {
head->next = head->next->next;
free(head->next->next);
} else {
printf("无法删除,因为列表中少于5个元素。\n");
}
// 输出剩余线性表
printf("After deletion:\n");
printList(head);
return 0;
}
```
这个程序首先初始化了线性表,然后根据指令插入新的元素,最后删除指定位置的元素,并分别打印出每次操作后的线性表。
阅读全文