数据结构,线性表数据元素为int类型,表示学生成绩,某班级某科目的成绩为:78,98,65,85,…,采用顺序存储方式,编写顺序表定义,初始化、插入、删除、查找
时间: 2024-09-13 16:18:33 浏览: 45
实验1_数据结构_输入成绩界面_线性表_
5星 · 资源好评率100%
数据结构中的顺序表是一种线性表的实现方式,它使用一段连续的存储单元一次存放线性表的元素。在本例中,我们定义一个整型数组来存储学生成绩,并提供基本的操作,包括初始化、插入、删除和查找。
以下是使用C语言的一个简单示例:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100 // 定义顺序表的最大长度
// 顺序表的定义
typedef struct {
int data[MAX_SIZE]; // 存储数据元素的数组
int length; // 顺序表当前长度
} SeqList;
// 初始化顺序表
void InitList(SeqList *list) {
list->length = 0; // 初始化长度为0
}
// 在顺序表的第i个位置插入元素e
int InsertList(SeqList *list, int i, int e) {
if (i < 1 || i > list->length + 1) // 检查插入位置的有效性
return 0;
if (list->length >= MAX_SIZE) // 检查顺序表是否已满
return 0;
for (int j = list->length; j >= i; j--) // 将第i个位置及之后的元素后移
list->data[j] = list->data[j - 1];
list->data[i - 1] = e; // 在位置i处放入新元素
list->length++; // 长度增加1
return 1;
}
// 删除顺序表的第i个位置的元素,并将其存储在e中
int DeleteList(SeqList *list, int i, int *e) {
if (i < 1 || i > list->length) // 检查删除位置的有效性
return 0;
*e = list->data[i - 1]; // 将要删除的元素赋值给e
for (int j = i; j < list->length; j++) // 将第i个位置之后的元素前移
list->data[j - 1] = list->data[j];
list->length--; // 长度减少1
return 1;
}
// 查找顺序表中值为e的元素,并返回其位置
int FindList(SeqList list, int e) {
for (int i = 0; i < list.length; i++) {
if (list.data[i] == e) // 找到返回位置
return i + 1;
}
return -1; // 未找到返回-1
}
// 主函数示例
int main() {
SeqList list;
InitList(&list);
InsertList(&list, 1, 78);
InsertList(&list, 2, 98);
InsertList(&list, 3, 65);
InsertList(&list, 4, 85);
int position;
if (FindList(list, 65) != -1) {
printf("Element 65 found at position: %d\n", FindList(list, 65));
}
int deletedElement;
if (DeleteList(&list, 2, &deletedElement)) {
printf("Deleted element at position 2 is: %d\n", deletedElement);
}
return 0;
}
```
阅读全文