1、 建立一个顺序表,利用一维数组来存储,含有n个数据元素; 2、输出顺序表; 3、找到顺序表中第个元索并输出,在顺序表中查找e并返回它的位置: 4、完成在第i个元素之前插入数据e的操作; 5、删除顺序表中的第i个元素。c语言代码
时间: 2024-10-14 12:07:36 浏览: 93
用数组实现数据结构顺序表的几种功能
5星 · 资源好评率100%
在 C 语言中,我们可以使用结构体和指针来创建一个简单的顺序表。这里是一个简化的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义一个结构体表示顺序表的数据元素
typedef struct {
int data;
struct Node* next; // 指向下一个元素的指针
} Node;
// 初始化顺序表
Node* createList(int n) {
Node* list = (Node*)malloc(sizeof(Node));
list->data = 0;
list->next = NULL;
if (n > 0) {
Node* current = list;
for (int i = 1; i < n; ++i) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = i;
newNode->next = current->next;
current->next = newNode;
current = newNode;
}
}
return list;
}
// 输出顺序表
void printList(Node* head) {
Node* temp = head;
while (temp != NULL) {
printf("%d ", temp->data);
temp = temp->next;
}
printf("\n");
}
// 查找并输出元素的位置
int findElement(Node* head, int e) {
int position = 0;
Node* temp = head;
while (temp != NULL && temp->data != e) {
++position;
temp = temp->next;
}
if (temp == NULL)
return -1; // 如果没找到,返回 -1
else
return position;
}
// 插入元素
void insertBefore(Node** head, int i, int e) {
if (*head == NULL || i <= 0)
return;
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = e;
Node* prev = *head;
for (int j = 0; j < i - 1 && prev != NULL; ++j)
prev = prev->next;
if (prev != NULL)
prev->next = newNode;
else
*head = newNode;
}
// 删除元素
void deleteElement(Node** head, int i) {
if (*head == NULL || i <= 0)
return;
Node* temp = *head;
if (i == 1) {
*head = temp->next;
free(temp);
return;
}
for (int j = 0; j < i - 1 && temp != NULL; ++j)
temp = temp->next;
if (temp != NULL)
temp->next = temp->next->next;
else
printf("Error: Index out of range.\n");
free(temp); // 释放已删除节点的内存
}
int main() {
int n = 5;
Node* list = createList(n);
printList(list);
int target = 3;
int pos = findElement(list, target);
if (pos != -1)
printf("Element %d found at position %d\n", target, pos);
else
printf("Element not found.\n");
int insertPos = 2;
int valueToInsert = 7;
insertBefore(&list, insertPos, valueToInsert);
printList(list);
int deleteIndex = 3;
deleteElement(&list, deleteIndex);
printList(list);
return 0;
}
```
阅读全文