用c语言,已知顺序存储线性表的插入、删操作代码,请构造一个线性表:(1)实现其倒置操作,将结果输出显示;(2)删除其中的一个或多个元素,并将结果输出显示。 2、构建链式存储线性表,实现插入、打印、删除等功能。
时间: 2024-09-12 11:01:55 浏览: 66
C语言实现的顺序线性表
在C语言中,我们首先来讨论顺序存储线性表的插入和删除操作,然后分别针对这两个主题实现对应的倒置和删除操作。
**1. 顺序存储线性表的插入和删除操作**
```c
#include <stdio.h>
#define MAX_SIZE 10
// 顺序表结构体
typedef struct {
int data[MAX_SIZE];
int size;
} SeqList;
// 插入操作
void insert(SeqList *list, int value) {
if (list->size == MAX_SIZE - 1)
printf("List is full.\n");
else {
list->data[list->size] = value;
list->size++;
}
}
// 删除操作(假设删除第一个元素)
int delete(SeqList *list) {
if (list->size <= 0)
return -1; // 如果为空,返回错误码
int removedValue = list->data[0]; // 保存要删除的值
for (int i = 0; i < list->size - 1; i++)
list->data[i] = list->data[i + 1]; // 将后续元素前移一位
list->size--;
return removedValue;
}
// 输出线性表内容
void print(SeqList *list) {
for (int i = 0; i < list->size; i++) {
printf("%d ", list->data[i]);
}
printf("\n");
}
// 顺序表倒置操作
void reverse(SeqList *list) {
int start = 0, end = list->size - 1;
while (start < end) {
int temp = list->data[start];
list->data[start] = list->data[end];
list->data[end] = temp;
start++;
end--;
}
}
int main() {
SeqList list = {0, 0}; // 初始化空列表
// 插入操作,示例...
// delete(list); // 删除操作,示例...
print(&list);
reverse(&list);
print(&list);
return 0;
}
```
**2. 链式存储线性表的插入、删除和打印操作**
```c
#include <stdio.h>
typedef struct Node {
int data;
struct Node* next;
} LinkNode;
// 链表头结点
LinkNode* head = NULL;
// 插入节点
void insert(int value) {
LinkNode* newNode = (LinkNode*)malloc(sizeof(LinkNode));
newNode->data = value;
newNode->next = head;
head = newNode;
}
// 打印链表
void printList() {
LinkNode* curr = head;
while (curr != NULL) {
printf("%d ->", curr->data);
curr = curr->next;
}
printf("NULL\n");
}
// 删除特定节点(查找并删除首节点)
void deleteNode(int value) {
if (head == NULL) return;
if (head->data == value) {
LinkNode* temp = head;
head = head->next;
free(temp);
return;
}
LinkNode* curr = head;
while (curr->next != NULL && curr->next->data != value) {
curr = curr->next;
}
if (curr->next != NULL) {
LinkNode* temp = curr->next;
curr->next = curr->next->next;
free(temp);
}
}
int main() {
// 插入操作,示例...
// deleteNode(5); // 删除操作,示例...
printList();
return 0;
}
```
阅读全文