一.实验目的
巩固线性表的数据结构的存储方法和相关操作,学会针对具体应用,使用线性表的相关知识来解决具体问题,巩固课堂学习。
二. 实验内容
1.建立一个由n个学生成绩的顺序表,n的大小由自己确定,每一个学生的成绩信息由自己确定,实现数据的对表进行插入、删除、查找等操作。分别输出结果。
这里用顺序栈来实现。
//
// main.cpp
// 顺序栈
//
// Created by 梁华建 on 2017/10/12.
// Copyright © 2017年 梁华建. All rights reserved.
//
#include
const int StackSize=100;
//
template <class Datatype>
class SeqStack {
private:
Datatype data[StackSize];
int top;
public:
SeqStack(){top=-1;}; //将项顶指针置为-1
~SeqStack(){}
void Push(Datatype x);
Datatype Pop();
Datatype GetTop();//取栈顶元素实现
int Empty(); //判断是否为空
void printlist(); //打印
};
template <class Datatype>
int SeqStack
{
if (top==-1) {
return 1;
}
else return 0;
}
//入栈操作
template <class Datatype>
void SeqStack
{
if (top==StackSize-1) throw "栈空间已满,无法再添加";
data[++top]=x;
}
//出栈操作
template <class Datatype>
Datatype SeqStack
{
if (top==-1) throw "栈已经为空";
Datatype x;
x=data[top--];
return x;
}
template <class Datatype>
Datatype SeqStack
{
if (top==-1) throw "这是空栈";
return data[top];
}
template <class Datatype>
void SeqStack
{
if (top==-1) throw "这是空栈";
for (int i=0; i<=top; i++) {
std::cout<<data[i]<<"\n";
}
}
int main(int argc, const char * argv[]) {
SeqStack<int> Student = SeqStack<int>();
std::cout<<"is empty?"<
for (int i=0; i<10; i++) {
Student.Push(i);
}
std::cout<<"is empty?"<
std::cout<<"The top word is"<
Student.printlist();
std::cout<<"Pop the pop word,and it's "<
std::cout<<"The top word is"<
return 0;
}
实验总结:
这次顺序栈是比较简单的,特点就是先进后出,就像羽毛球筒装羽毛球,每次进栈top节点后移一位,就控制头结点就行。缺点十分明显,插入和删除操作比较麻烦会移动大量元素。