用c++代码写出输入线性表的各个数据域的值,同时显示创建的顺序表和链表结点数据;实现在第i个结点的之前插入一个新的结点,并显示插入后的线性表结点情况;实现将第i个结点删除,并将删除后的线性表结点情况显示出来;实现对线性表的按值查找和按序号查找。
时间: 2024-10-17 21:11:50 浏览: 43
在C++中,我们可以使用数组(顺序表)或动态链表(链表)来实现上述功能。这里分别给出基本操作的代码示例:
**顺序表实现(数组):**
```cpp
#include <iostream>
struct Node {
int data;
Node* next;
};
void displayArray(int arr[], int size) {
std::cout << "顺序表:";
for (int i = 0; i < size; ++i)
std::cout << arr[i] << " ";
std::cout << "\n";
}
// 插入新节点(在i位置之前)
void insertBefore(Node*& arr, int index, int value) {
Node newNode = {value};
if (index == 0) {
newNode.next = arr;
arr = &newNode;
} else {
Node* temp = arr;
for (int i = 0; i < index - 1; ++i)
temp = temp->next;
newNode.next = temp->next;
temp->next = &newNode;
}
}
// 删除第i个节点
void deleteNode(Node*& arr, int index) {
if (index <= 0)
return;
Node* temp = arr;
for (int i = 0; i < index - 1; ++i)
temp = temp->next;
Node* nodeToDelete = temp->next;
temp->next = nodeToDelete->next;
delete nodeToDelete;
}
// 查找节点(按值和序号)
bool findNode(int arr[], int size, int value, int& index) {
for (int i = 0; i < size; ++i) {
if (arr[i] == value) {
index = i;
return true;
}
}
index = -1; // 如果未找到,返回false并设置index为-1
return false;
}
```
**链表实现(动态链表):**
```cpp
class Node {
public:
int data;
Node* next;
};
// 链表相关操作类似,只是使用指针代替数组索引
// ...
```
阅读全文