//完成顺序栈程序:分配40个存储空间 //数据对象:从自己学号开始往后数,取10位同学 //数据元素至少包含两个数据项:学号,成绩 //按照书本学习的栈的结构和算法来完成程序,否则视为抄袭 typedef struct{ //定义
时间: 2024-10-09 13:13:03 浏览: 22
您想要了解如何编写一个顺序栈程序,用于存储学生的学号和成绩,并且能够模拟数据插入、删除和查询等基本操作吗?首先,我们需要定义一个结构体来表示每个学生的信息,然后创建一个数组来作为栈的数据容器。
```c
// 定义学生信息结构体
typedef struct {
int 学号; // 学生的学号
float 成绩; // 学生的成绩
} Student;
// 完成顺序栈的定义
typedef struct {
Student *stack; // 栈底指针
int top; // 栈顶位置
int capacity; // 栈的容量(这里设置为40)
} SequenceStack;
// 初始化栈
void initStack(SequenceStack *s) {
s->stack = (Student*)malloc(sizeof(Student) * s->capacity);
s->top = -1;
}
// 入栈(将学生信息压入栈)
void push(SequenceStack *s, Student newStudent) {
if (s->top < s->capacity - 1) {
s->top++;
s->stack[s->top] = newStudent;
} else {
printf("栈已满,无法入栈。\n");
}
}
// 出栈(弹出栈顶的学生信息)
void pop(SequenceStack *s, Student* result) {
if (s->top >= 0) {
*result = s->stack[s->top];
s->top--;
} else {
printf("栈为空,无法出栈。\n");
}
}
// 查询栈顶的学生信息
void peek(SequenceStack *s, Student* result) {
if (s->top >= 0) {
*result = s->stack[s->top];
} else {
printf("栈为空,无法查看栈顶。\n");
}
}
// 检查栈是否为空
int isEmpty(SequenceStack *s) {
return s-1;
}
// 检查栈是否已满
int isFull(SequenceStack *s) {
return s->top == s->capacity - 1;
}
阅读全文