用C语言写出:创建一个顺序表,表中元素依次为:s、t、d、i、o(均为char类型);查找顺序表中是否包含'b'字符;从顺序表中取出第3个元素并返回其值;在第3个元素后面插入3个新的元素依次为:l、i、b;将顺序表中的最后两个元素删除;将顺序表中的元素输出。
时间: 2024-09-17 13:09:51 浏览: 44
C语言实现的顺序表功能完整实例
在C语言中,我们可以使用结构体和指针来创建和操作顺序表。首先定义一个结构体`Node`存储单个元素,然后创建一个链表结构`List`来表示整个顺序表。这里是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义元素结构
typedef struct Node {
char data;
struct Node* next;
} Node;
// 创建顺序表节点
void create_list(Node** head, char value) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = value;
newNode->next = NULL;
if (*head == NULL) {
*head = newNode;
} else {
Node* current = *head;
while (current->next != NULL) {
current = current->next;
}
current->next = newNode;
}
}
// 检查是否存在 'b'
int contains_b(Node* head) {
Node* current = head;
while (current != NULL) {
if (current->data == 'b') {
return 1; // 存在
}
current = current->next;
}
return 0; // 不存在
}
// 取出第3个元素
char get_third_element(Node* head) {
Node* current = head;
for (int i = 1; i < 3 && current != NULL; i++) {
current = current->next;
}
if (current != NULL) {
return current->data;
} else {
printf("Error: Index out of bounds.\n");
return '\0';
}
}
// 在第3个元素后面插入新的元素
void insert_after_third(Node* head) {
Node* newElement = (Node*)malloc(sizeof(Node));
newElement->data = 'l';
newElement->next = NULL;
Node* third = get_third_element(head);
third->next = newElement;
newElement->next = (Node*)malloc(sizeof(Node));
newElement = newElement->next;
newElement->data = 'i';
newElement->next = (Node*)malloc(sizeof(Node));
newElement = newElement->next;
newElement->data = 'b';
newElement->next = NULL;
}
// 删除最后两个元素
void remove_last_two(Node** head) {
if (*head == NULL || (*head)->next == NULL) {
printf("Error: List is too short to remove two elements.\n");
return;
}
Node* current = *head;
while (current->next->next != NULL) {
current = current->next;
}
free(current->next);
current->next = NULL;
}
// 打印顺序表元素
void print_list(Node* head) {
Node* temp = head;
while (temp != NULL) {
printf("%c ", temp->data);
temp = temp->next;
}
printf("\n");
}
int main() {
Node* head = NULL;
create_list(&head, 's');
create_list(&head, 't');
create_list(&head, 'd');
create_list(&head, 'i');
create_list(&head, 'o');
if (contains_b(head)) {
printf("Sequence list contains 'b'.\n");
} else {
printf("Sequence list does not contain 'b'.\n");
}
char third = get_third_element(head);
printf("Third element: %c\n", third);
insert_after_third(head);
remove_last_two(&head);
print_list(head);
return 0;
}
```
这个程序会创建一个包含`s`, `t`, `d`, `i`, `o`的顺序表,并执行相应的操作。注意,实际运行时可能会有内存泄漏的问题,这里是简化版本,实际生产环境中需要处理好内存分配和释放。
阅读全文