实验二 静态链表实现学生成绩
来源:互联网 发布:python简明教程pdf版 编辑:程序博客网 时间:2024/04/28 13:08
源代码
#includeusing namespace std;const int MaxSize = 100; //自定义表长template class Node {public: T data; int next; //存储指向下一个节点的数组的下标};template class staticLink {public:staticLink(); staticLink(T a[],int n); ~staticLink(){}; int Length(){return length;} //返回单链表的长度 T Get(int i); //按位查找,查找第i个节点的元素 int Locate(T x); //按值查找,查找链表中第一个值为x的元素,并返回序号 bool Insert(int i, T x); //插入元素,在第i个位置插入值x bool Delete(int i); //删除节点,删除第i个节点 void PrintList(); //遍历节点private: int first; int avail; int length; Node SList[MaxSize];};template staticLink ::staticLink() {first=0;avail=1;sList[0].next=-1;for(int i=1;i staticLink ::staticLink(T a[],int n) { for (int i = 0; i < MaxSize; i++) { SList[i].next =i+1; } length = 0; SList[MaxSize-1].next=-1; avail = 2; first = 1; SList[first].next = -1; //利用头插法插入元素 for (int j = 0; j < n;j++) //判断链中是否已满 { if (avail==-1) { break; } int s = avail; //空链后移 avail = SList[avail].next; //新链上值 SList[s].data = a[j]; //上链 SList[s].next = SList[first].next; SList[first].next = s; length++; }}template T staticLink ::Get(int i) { if (i <= 0 || i > length) { throw"location error"; } int s = first; for (int j = 0; j < i; j++) { s = SList[s].next; } return SList[s].data;}template int staticLink ::Locate(T x) { int count = 0; int s = first; while (count bool staticLink ::Insert(int i, T x) { if (SList[avail].next==-1) { return false; } int s = first; int temp = avail; SList[temp].data = x; //空链头针后移 avail = SList[avail].next; int count=0; while (count < i-1 && count < length) { s = SList[s].next; count++; } SList[temp].next = SList[s].next; SList[s].next = temp; length++; return true;}template bool staticLink ::Delete(int i) { if (i <= 0 || i > length) { return false; } int count = 0; int s = first; while (count < i-1 && count < length) { s = SList[s].next; count++; } int q = SList[s].next; SList[s].next = SList[q].next; SList[q].next = avail; avail = q; length--; return true;}template void staticLink ::PrintList() { int s = SList[first].next; for (int i = 1; i <= length; i++) { cout << SList[s].data << " "; s = SList[s].next; }}int main() {cout<<"\t ****************学生成绩静态链表的实现**************\n";cout<<"\t ****************************************************\n";cout<<"\t *------------------------------------------*********\n";cout<<"\t *****************[1]——输出表长********************\n";cout<<"\t *****************[2]——按位查找********************\n";cout<<"\t *****************[3]——按值查找********************\n";cout<<"\t *****************[4]——插入************************\n";cout<<"\t *****************[5]——删除************************\n";cout<<"\t *****************[6]——遍历************************\n";cout<<"\t *****************[7]——输出主菜单******************\n";cout<<"\t *****************[8]——退出************************\n";cout<<"\t *------------------------------------------*********\n";cout<<"\t ****************************************************\n";int a[8] = {78,87,89,82,80,91,98,94 };staticLink sList(a, 8);int flag,i,x,t;flag=0;while(flag==0){cout<<"please input the command(1~8):"< >t;switch(t){case 1:cout<<"the length is:"< >i;x=sList.Get(i);cout<<"the number is:"< >x;i=sList.Locate(x);cout<<"the location is:"<>i;cout<<"the insert number is:";cin>>x;sList.Insert(i,x);cout<<"insert successfully!"< >i;sList.Delete(i);cout<<"delete successfully!"<
运行结果
运行程序,进入主界面
输入1,输出表长
输入6,输出静态链表
输入2,查找第四个位置的成绩
输入3,查找成绩87所在的位置
输入4,在第四个位置插入成绩90
输入5,删除第八个位置的成绩
阅读全文
0 0
- 实验二 静态链表实现学生成绩
- 实验二 创建学生成绩-静态链表
- 实验二 顺序表实现学生成绩
- 实验二:顺序表实现N个学生成绩操作
- 实验二 单链表实现学生成绩
- 实验二 双链表实现学生成绩
- 实验二 间接寻址实现学生成绩
- 实验二 创建学生成绩-顺序表
- 实验二:单链表实现N个学生成绩操作
- 实验2.4 静态链表实现成绩管理
- 数据结构|创建学生成绩的静态链表(实验2.4)
- 数据结构|创建学生成绩的静态链表(实验2.4)
- 创建学生成绩静态链表
- 创建学生成绩的静态链表
- 终于完成~《数据结构》实验二:线性表的实验(实现一个N个学生成绩的顺序表)
- 实验二:学生成绩之单链表操作
- 实验二 创建学生成绩-单链表
- 实验二 创建学生成绩-双链表
- 写给2017年报名海风的同学
- 《Java核心技术》第10版读书笔记之Chap5(5)——Java中变参函数以及枚举类的原理与使用
- 关于顺序表的简单操作合集
- BZOJ 1703 Ranking the Cows 奶牛排名 (传递闭包)
- raw_input() 与 input() __ Python
- 实验二 静态链表实现学生成绩
- 14. Longest Common Prefix
- C++中虚继承的vtordisp
- 模板:bellman-ford算法
- hihocoder#1069 : 最近公共祖先·三(DFS序列+线段树)
- Django入门总结
- 机器学习——特征工程之数据预处理
- wsgi接口开发
- C# FileSystemWatcher 在监控文件夹和文件时的用法