数据结构某班级某科目的成绩为:78,98,65,85,…,采用顺序存储方式,实现对此成绩表的创建、插入、删除、查找等操作。线性表数据元素为int类型,表示学生成绩,编写顺序表定义、初始化、插入、删除、查找。
时间: 2024-09-13 20:18:19 浏览: 209
高校学生成绩管理系统数据结构设计.pdf
顺序表是一种线性表的顺序存储结构,它使用一段连续的存储单元来存储线性表的数据元素。在C语言中,顺序表通常可以用数组来实现。下面给出顺序表的定义、初始化、插入、删除和查找的基本操作的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100 // 定义顺序表的最大长度
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
// 顺序表的结构定义
typedef struct {
int data[MAXSIZE]; // 存储数据元素的数组
int length; // 顺序表当前长度
} SqList;
// 初始化顺序表
void InitList(SqList *L) {
L->length = 0; // 初始化长度为0
}
// 在顺序表的第i个位置插入元素e
int ListInsert(SqList *L, int i, int e) {
if (i < 1 || i > L->length + 1) return ERROR; // 插入位置不合法
if (L->length >= MAXSIZE) return ERROR; // 顺序表已满
for (int k = L->length; k >= i; k--) { // 将第i个位置及之后的元素后移
L->data[k] = L->data[k - 1];
}
L->data[i - 1] = e; // 将新元素插入
L->length++; // 长度加1
return OK;
}
// 删除顺序表的第i个位置的元素,并用e返回
int ListDelete(SqList *L, int i, int *e) {
if (i < 1 || i > L->length) return ERROR; // 删除位置不合法
*e = L->data[i - 1];
for (int k = i; k < L->length; k++) { // 将第i个位置之后的元素前移
L->data[k - 1] = L->data[k];
}
L->length--; // 长度减1
return OK;
}
// 查找顺序表中元素e的位置
int LocateElem(SqList L, int e) {
for (int i = 0; i < L.length; i++) {
if (L.data[i] == e) return i + 1;
}
return 0; // 查找失败,返回0
}
// 打印顺序表
void PrintList(SqList L) {
for (int i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
int main() {
SqList L;
InitList(&L); // 初始化顺序表
// 插入数据
ListInsert(&L, 1, 78);
ListInsert(&L, 2, 98);
ListInsert(&L, 3, 65);
ListInsert(&L, 4, 85);
PrintList(L);
// 删除数据
int deletedElement;
ListDelete(&L, 2, &deletedElement);
printf("Deleted element: %d\n", deletedElement);
PrintList(L);
// 查找数据
int position = LocateElem(L, 85);
if (position) {
printf("Element 85 found at position: %d\n", position);
} else {
printf("Element 85 not found.\n");
}
return 0;
}
```
这段代码定义了一个顺序表的数据结构,并实现了初始化、插入、删除和查找操作。通过`main`函数中的调用,展示了如何使用这些操作来处理学生成绩的数据。
阅读全文