请编写程序实现顺序表的建立、求长度、插
入、删除、遍历的基本运算,其中顺序表中每
一个数据元素的类型定义为学生信息的结构
体,包括学号、姓名和成绩。
建议多看一下结构体的内容
参考GPT和自己的思路:
好的,以下是程序实现顺序表基本运算的示例代码:
#include <iostream>
#define MAXSIZE 100 // 定义顺序表的最大长度为100
struct Student { // 定义学生信息的结构体
int id; // 学号
std::string name; // 姓名
int grade; // 成绩
};
struct SeqList {
Student data[MAXSIZE]; // 定义顺序表存储学生信息的数组
int length; // 顺序表的实际长度
};
// 初始化顺序表
void InitList(SeqList& L) {
L.length = 0; // 将顺序表的长度初始化为0
}
// 求顺序表的长度
int GetLength(SeqList L) {
return L.length;
}
// 在指定位置插入元素
bool InsertList(SeqList& L, int pos, Student s) {
if (pos < 1 || pos > L.length + 1) { // 判断插入位置是否合法
return false; // 插入失败,返回false
}
if (L.length >= MAXSIZE) { // 判断顺序表是否已满
return false; // 插入失败,返回false
}
for (int i = L.length; i >= pos; --i) { // 将pos及之后的元素后移一位
L.data[i] = L.data[i - 1];
}
L.data[pos - 1] = s; // 在pos位置插入元素
++L.length; // 顺序表长度加1
return true; // 插入成功,返回true
}
// 删除指定位置的元素
bool DeleteList(SeqList& L, int pos) {
if (pos < 1 || pos > L.length) { // 判断删除位置是否合法
return false; // 删除失败,返回false
}
for (int i = pos - 1; i < L.length - 1; ++i) { // 将pos之后的元素前移一位
L.data[i] = L.data[i + 1];
}
--L.length; // 顺序表长度减1
return true; // 删除成功,返回true
}
// 遍历输出顺序表中的元素
void TraverseList(SeqList L) {
for (int i = 0; i < L.length; ++i) {
std::cout << "id: " << L.data[i].id << " name: " << L.data[i].name << " grade: " << L.data[i].grade << "\n";
}
}
// 主函数
int main() {
SeqList L;
InitList(L);
// 插入元素
Student s1 = { 10001, "Tom", 92 };
Student s2 = { 10002, "Jerry", 85 };
InsertList(L, 1, s1);
InsertList(L, 2, s2);
// 遍历输出
TraverseList(L);
// 删除元素
DeleteList(L, 2);
TraverseList(L);
return 0;
}
上述示例代码中,使用了C++语言实现了顺序表的基本运算,包括初始化顺序表、求顺序表长度、插入元素、删除元素、遍历输出元素等操作。其中顺序表中每一个数据元素的类型都是学生信息的结构体,包括学号、姓名和成绩。建议在编写程序时,根据具体的需求对代码进行修改,以满足实际应用场景。
所谓顺序表就是数组,你可以参考一些现成的程序,遇到问题再提问。