用c++利用链式存储方式实现下列功能:根据键盘输入数据建立一个线性表,并输出该线性表;对该线性表进行数据的插入、删除、查找操作,并在插入和删除数据后,再输出线性表。
时间: 2023-06-03 21:07:28 浏览: 134
好的,这是一个计算机编程问题,我可以回答。使用链式存储方式可以实现对线性表的插入、删除和查找操作。具体实现方法可以参考以下伪代码:
```c
// 定义一个节点结构体
typedef struct ListNode {
int data; // 数据
struct ListNode* next; // 指向下一个节点的指针
} ListNode;
// 定义一个链表结构体
typedef struct List {
ListNode* head; // 头节点
int size; // 链表长度
} List;
// 创建一个链表
List* createList() {
List* list = (List*) malloc(sizeof(List)); // 分配内存空间
list->head = NULL; // 头节点指针初始化为空
list->size = 0; // 长度初始化为0
return list;
}
// 插入数据
void insert(List* list, int data) {
ListNode* node = (ListNode*) malloc(sizeof(ListNode)); // 分配内存空间
node->data = data; // 设置数据
node->next = list->head; // 将新节点作为头节点
list->head = node; // 更新头节点指针
list->size++; // 长度自增
}
// 删除数据
void remove(List* list, int data) {
ListNode* node = list->head; // 从头节点开始查找
ListNode* prev = NULL; // 记录前一个节点
while (node != NULL && node->data != data) {
prev = node; // 更新前一个节点指针
node = node->next; // 更新当前节点指针
}
if (node != NULL) { // 如果查找到了数据
if (prev == NULL) { // 如果要删除的是头节点
list->head = node->next; // 更新头节点指针
} else {
prev->next = node->next; // 更新前一个节点的next指针
}
free(node); // 释放内存空间
list->size--; // 长度自减
}
}
// 查找数据
int search(List* list, int data) {
ListNode* node = list->head; // 从头节点开始查找
while (node != NULL && node->data != data) {
node = node->next; // 更新当前节点指针
}
if (node != NULL) { // 如果查找到了数据
return 1;
} else {
return 0;
}
}
// 主函数
int main() {
List* list = createList(); // 创建一个链表
int n, data;
printf("请输入要插入的元素个数: ");
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
printf("请输入第%d个元素: ", i);
scanf("%d", &data);
insert(list, data); // 插入元素
}
printf("当前链表为: ");
ListNode* node = list->head; // 从头节点开始输出
while (node != NULL) {
printf("%d ", node->data); // 输出数据
node = node->next; // 更新当前节点指针
}
printf("\n请输入要删除的元素: ");
scanf("%d", &data);
remove(list, data); // 删除元素
printf("当前链表为: ");
node = list->head; // 从头节点开始输出
while (node != NULL) {
printf("%d ", node->data); // 输出数据
node = node->next; // 更新当前节点指针
}
printf("\n请输入要查找的元素: ");
scanf("%d", &data);
if (search(list, data)) {
printf("找到了\n");
} else {
printf("没找到\n");
}
return 0;
}
```
以上就是利用链式存储方式实现插入、删除和查找操作的代码。
阅读全文