请用c语言编程实现一个对顺序表进行基本操作的系统,主要包括表的创建、输入、查询、取值、插入、删除和输出等操作。
时间: 2024-09-23 22:02:33 浏览: 75
874数据结构与C语言程序设计考试大纲1
在C语言中,我们可以使用结构体和指针来实现一个简单的顺序表系统。下面是一个基础的示例,包含了创建、插入、删除和输出列表的操作:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义顺序表节点结构体
typedef struct Node {
int data; // 数据域
struct Node* next; // 指向下一个节点的指针
} Node;
// 创建一个新的节点
Node* createNode(int value) {
Node* newNode = (Node*)malloc(sizeof(Node));
if (!newNode) {
printf("Memory allocation failed.\n");
return NULL;
}
newNode->data = value;
newNode->next = NULL;
return newNode;
}
// 在链表末尾添加新节点
void append(Node** headRef, int value) {
Node* newNode = createNode(value);
if (*headRef == NULL) {
*headRef = newNode;
return;
}
Node* last = *headRef;
while (last->next != NULL) {
last = last->next;
}
last->next = newNode;
}
// 打印列表
void printList(Node* head) {
Node* temp = head;
while (temp != NULL) {
printf("%d ", temp->data);
temp = temp->next;
}
printf("\n");
}
int main() {
Node* head = NULL; // 初始为空
// 插入操作
for (int i = 1; i <= 5; i++) {
append(&head, i);
}
// 输出列表
printList(head);
// 查询操作
int key = 3;
if (search(&head, key)) {
printf("Element found at position %d\n", searchPos(head, key));
} else {
printf("Element not found in the list.\n");
}
// 删除操作
deleteNode(&head, 3); // 删除键为3的节点
// 再次打印列表
printList(head);
return 0;
}
// 查找函数
int search(Node* head, int key) {
Node* temp = head;
int pos = 1;
while (temp != NULL && temp->data != key) {
temp = temp->next;
pos++;
}
return temp != NULL;
}
// 查找元素位置
int searchPos(Node* head, int key) {
Node* temp = head;
int pos = 1;
while (temp != NULL && temp->data != key) {
temp = temp->next;
pos++;
}
return temp ? pos : -1; // 如果找到返回位置,否则返回-1
}
// 删除节点
void deleteNode(Node** headRef, int key) {
Node* temp = *headRef, *prev;
if (temp != NULL && temp->data == key) {
*headRef = temp->next; // 如果头节点就是目标,直接改变头指针
free(temp);
return;
}
while (temp != NULL && temp->data != key) {
prev = temp;
temp = temp->next;
}
if (temp == NULL) return; // 键未找到,不做处理
prev->next = temp->next;
free(temp);
}
```
这个程序实现了顺序表的基本操作,包括创建、插入、查找(查询)、删除和输出。请注意,这里并未包含获取和设置值的功能,但你可以很容易地通过遍历列表来实现这些操作。
阅读全文