1、已知顺序存储线性表的插入、删操作代码,请构造一个线性表:(1)实现其倒 置操作,将结果输出显示;(2)删除其中的一个或多个元素,并将结果输出显示。 2、构建链式存储线性表,实现插入、打印、删除等功能。用C++语言
时间: 2024-09-12 15:01:44 浏览: 35
数据结构实验报告-线性表-两个有序线性表的归并算法
5星 · 资源好评率100%
1. 顺序存储线性表的倒置操作和删除元素的示例代码(假设使用数组实现):
```cpp
#include <iostream>
using namespace std;
// 顺序存储线性表的倒置
void reverseArray(int arr[], int length) {
for(int i = 0; i < length / 2; i++) {
int temp = arr[i];
arr[i] = arr[length - 1 - i];
arr[length - 1 - i] = temp;
}
}
// 删除顺序存储线性表中的元素
void deleteElement(int arr[], int &length, int element) {
int k = 0;
for (int i = 0; i < length; i++) {
if (arr[i] != element) {
arr[k++] = arr[i];
}
}
length = k; // 更新线性表长度
}
// 打印数组
void printArray(int arr[], int length) {
for (int i = 0; i < length; i++) {
cout << arr[i] << " ";
}
cout << endl;
}
int main() {
int arr[] = {1, 2, 3, 4, 5}; // 初始化线性表
int length = sizeof(arr) / sizeof(arr[0]);
// 倒置操作
reverseArray(arr, length);
cout << "倒置后的线性表: ";
printArray(arr, length);
// 删除元素
deleteElement(arr, length, 3); // 删除元素3
cout << "删除元素3后的线性表: ";
printArray(arr, length);
return 0;
}
```
2. 链式存储线性表的实现代码:
```cpp
#include <iostream>
using namespace std;
// 链表节点的定义
struct ListNode {
int data;
ListNode* next;
ListNode(int x) : data(x), next(NULL) {}
};
// 插入元素到链表末尾
void insertAtEnd(ListNode*& head, int data) {
ListNode* newNode = new ListNode(data);
if (head == NULL) {
head = newNode;
return;
}
ListNode* temp = head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = newNode;
}
// 打印链表
void printList(ListNode* head) {
ListNode* temp = head;
while (temp != NULL) {
cout << temp->data << " ";
temp = temp->next;
}
cout << endl;
}
// 删除链表中的元素
void deleteFromList(ListNode*& head, int data) {
ListNode* temp = head;
if (temp != NULL && temp->data == data) {
head = temp->next;
delete temp;
return;
}
ListNode* prev = NULL;
while (temp != NULL && temp->data != data) {
prev = temp;
temp = temp->next;
}
if (temp == NULL) return; // 没有找到要删除的元素
prev->next = temp->next;
delete temp;
}
int main() {
ListNode* head = NULL; // 初始化链表头指针
// 插入元素
insertAtEnd(head, 1);
insertAtEnd(head, 2);
insertAtEnd(head, 3);
insertAtEnd(head, 4);
insertAtEnd(head, 5);
cout << "原始链表: ";
printList(head);
// 删除元素
deleteFromList(head, 3); // 删除元素3
cout << "删除元素3后的链表: ";
printList(head);
return 0;
}
```
阅读全文