用c++语言写出一个顺序表,表中元素依次为:s、t、d、i、o(均为char类型); 查找顺序表中是否包含'b'字符; 从顺序表中取出第3个元素并返回其值; 在第3个元素后面插入3个新的元素依次为:l、i、b; 将顺序表中的最后两个元素删除; 将顺序表中的元素输出。
时间: 2024-09-20 08:04:10 浏览: 38
c++实验题.docx
首先,我们先创建一个简单的C++顺序表结构,用于存储字符,并实现相应的操作:
```cpp
#include <iostream>
using namespace std;
// 定义顺序表节点结构体
struct ListNode {
char data;
ListNode* next;
};
// 创建顺序表的函数
ListNode* createList(char values[], int size) {
ListNode* head = new ListNode();
ListNode* tail = head;
for (int i = 0; i < size; ++i) {
tail->next = new ListNode();
tail->next->data = values[i];
tail = tail->next;
}
return head;
}
// 查找函数
bool searchList(ListNode* head, char target) {
ListNode* current = head;
while (current != nullptr) {
if (current->data == target) {
return true;
}
current = current->next;
}
return false;
}
// 取出第n个元素
char getNthElement(ListNode* head, int n) {
ListNode* current = head;
for (int i = 0; i < n - 1 && current != nullptr; ++i) {
current = current->next;
}
if (current == nullptr) {
throw runtime_error("Index out of range");
}
return current->data;
}
// 插入元素
void insertAfterNthElement(ListNode*& head, char value, int n) {
ListNode* newNode = new ListNode();
newNode->data = value;
ListNode* current = head;
for (int i = 0; i < n - 1 && current != nullptr; ++i) {
current = current->next;
}
if (current == nullptr) {
throw runtime_error("Invalid index");
}
newNode->next = current->next;
current->next = newNode;
}
// 删除元素
void deleteLastTwoElements(ListNode*& head) {
if (head == nullptr || head->next == nullptr) {
return;
}
ListNode* temp = head->next;
head->next = temp->next;
delete temp;
}
// 输出列表
void printList(ListNode* head) {
ListNode* current = head;
while (current != nullptr) {
cout << current->data;
current = current->next;
if (current != nullptr) {
cout << " -> ";
}
}
cout << endl;
}
int main() {
char values[] = {'s', 't', 'd', 'i', 'o'};
int size = sizeof(values) / sizeof(values[0]);
ListNode* list = createList(values, size);
// 检查是否存在 'b'
bool containsB = searchList(list, 'b');
cout << "Does the list contain 'b'? " << (containsB ? "Yes" : "No") << endl;
// 取出第3个元素
char thirdElement = getNthElement(list, 3);
cout << "The 3rd element is: " << thirdElement << endl;
// 在第3个元素后插入 'l', 'i', 'b'
insertAfterNthElement(list, 'l', 3);
insertAfterNthElement(list, 'i', 4);
insertAfterNthElement(list, 'b', 5);
// 删除最后两个元素
deleteLastTwoElements(list);
// 打印更新后的列表
printList(list);
return 0;
}
```
在这个例子中,我们首先创建了一个包含给定字符的顺序表,然后实现了查找、获取第n个元素、插入、删除以及打印列表的功能。
阅读全文