头文件:

//静态链表头文件
#include "stdafx.h"using namespace std;#define MAXSIZE 250typedef int ElemType;typedef struct{ElemType data;int cur; //存在next的指针游标
} StaticLinkList[MAXSIZE];class StaticLinuralList{public:StaticLinuralList();//构造函数~StaticLinuralList();
private:int cur_Length;//初始化链表bool InitList(StaticLinkList L);//是否链表已满//return:true:满,false:非满bool isFull(StaticLinkList L);//获得一个可以插入的节点的下标//@param:L:需要的链表L//return:空的可插入的下标int GetEmptyPos(StaticLinkList L);//得到链表的长度//@param[in]:L:当前链表// return: 链表的长度int getListLength(StaticLinkList L); //插入数据//@param[in]:L:当前链表//@param[in]:pos:插入的位置//@param[in]:data:插入的数据// return:true:插入成功,false:插入失败bool InsertData(StaticLinkList L,int pos,ElemType data);//删除元素//@param[in]:L:当前链表//@param[in]:pos:删除的位置// return:true:删除成功,false:删除失败bool DeleteData(StaticLinkList L,int pos);//查找元素//@param[in]:L:当前链表//@param[in]:pos:位置// return:位置的数据ElemType FindDataByPos(StaticLinkList L,int pos);};

实现cpp文件:

/* 静态链表头文件 */#include "stdafx.h"
#include "StaticLineList.h"
using namespace std;StaticLinuralList::StaticLinuralList(){cur_Length = 0;//初始化长度为0;
}StaticLinuralList::~StaticLinuralList(){}//初始化链表
//其中 最后一个是cur为0 指向第一个坐标
bool  StaticLinuralList::InitList(StaticLinkList L){int i = 0;for (i = 0 ; i < MAXSIZE-1;i++){L[i].cur = i+1;}L[MAXSIZE-1].cur = 0;  //设置最后一个为空return true;
}//得到链表的长度
//@param[in]:L:当前链表
// return: 链表的长度
int StaticLinuralList::getListLength(StaticLinkList L){return cur_Length;
}//插入数据
//@param[in]:L:当前链表
//@param[in]:pos:插入的位置
//@param[in]:data:插入的数据
// return:true:插入成功,false:插入失败
bool StaticLinuralList::InsertData(StaticLinkList L,int pos,ElemType data){if (isFull(L)){std::cout << " 链表已经满了"<< endl;return false;}if (pos < 1 || pos > cur_Length + 1){cout << "Error to Insert!" << endl;}//获取可以插入的posint k = GetEmptyPos(L);int j = MAXSIZE-1;if (k){L[k].data = data;for(int i = 1; i <= pos -1; ++i){j = L[j].cur;}L[k].cur = L[j].cur;L[j].cur = k;++cur_Length;return true;}return false;
}//删除元素
//@param[in]:L:当前链表
//@param[in]:pos:删除的位置
// return:true:删除成功,false:删除失败
bool StaticLinuralList::DeleteData(StaticLinkList L,int pos){if (cur_Length == 0)//假设链表为空。不运行删除操作{return false;}if (pos<1 || pos>cur_Length )//假设删除的位置不合法,返回false{cout << "The invalid index!\n";return false;}int k = MAXSIZE - 1;int i = 1;for (; i <= pos- 1;++i)//找到第index-1个节点k{k = L[k].cur;}i = L[k].cur;//i为第index个节点的下标L[k].cur = L[i].cur;//将第index-1个节点的cur设置成第index个节点的cur,实现了把第index个节点排除在链表之外//data = StList[i].data;//返回第index个节点的data给e//DeleteSpace(i);//回收第index个节点的空间--cur_Length;//链表长度减一return true;
}//查找元素
//@param[in]:L:当前链表
//@param[in]:pos:位置
// return:位置的数据
ElemType StaticLinuralList::FindDataByPos(StaticLinkList L,int pos){if (pos==1){return L[pos-1].data;}if (L[pos-2].cur == 0){cout << "数据为空" << endl;return 0;}return L[pos-1].data;
}//判断是否已满
bool StaticLinuralList::isFull(StaticLinkList L)
{if (cur_Length == MAXSIZE-1){return true;}return false;
}//获取可插入的下标
int StaticLinuralList::GetEmptyPos(StaticLinkList L){//参考链接:https://blog.csdn.net/yyc1023/article/details/22230795int i = L[0].cur;if (i)//存在的话{L[0].cur = L[i].cur;}return i;
}

C++数据结构03--静态链式线性表的实现相关推荐

  1. php数据结构之线性表,php数据结构之顺序链表与链式线性表示例

    本文实例讲述了php数据结构之顺序链表与链式线性表.分享给大家供大家参考,具体如下: 链表操作 1. InitList(L):初始化链表 2. DestroyList(L):删除连接 3. Clear ...

  2. 【数据结构】线性表之双向链式线性表

    2019独角兽企业重金招聘Python工程师标准>>> public class DuLinkList<T> {// 定义一个内部类Node,Node实例代表链表的节点p ...

  3. Programming Ability Test学习 3-05. 求链式线性表的倒数第K项(15)

    3-05. 求链式线性表的倒数第K项(15) 时间限制 250 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 给定一系列正整数,请设计一个尽可能高效的算法, ...

  4. 求链式线性表的倒数第K项 (20 分)

    7-173 求链式线性表的倒数第K项 (20 分) 给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字. 输入格式: 输入首先给出一个正整数K,随后是若干非负整数,最后以一个负整 ...

  5. PTA5-19 求链式线性表的倒数第K项

    5-19 求链式线性表的倒数第K项   (20分) 给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字. 输入格式: 输入首先给出一个正整数K,随后是若干正整数,最后以一个负整数 ...

  6. 链式线性表和顺序线性表

    顺序线性表 顺序表的存储结构通常用一维数组来描述,数组的下标与元素在线性表中的序号相对应. 在这里插入代码片 线性表的存储结构: typedef struct {int elem[MAX_SIZE]; ...

  7. 拼题---求链式线性表的倒数第K项(两种算法的比较)

    7-17 求链式线性表的倒数第K项 (20 分) 给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字. 输入格式: 输入首先给出一个正整数K,随后是若干正整数,最后以一个负整数表 ...

  8. 1-6 求链式线性表的倒数第K项

    1-6 求链式线性表的倒数第K项 给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字. 输入格式: 输入首先给出一个正整数K,随后是若干非负整数,最后以一个负整数表示结尾(该负数 ...

  9. 求链式线性表的倒数第K项(两种方法,第二种较好)

    求链式线性表的倒数第K项 题目 答案 第一种解法 第二种解法(较好) 注意 题目 答案 第一种解法 这种方法是正常输入,然后将链表逆置,虽然pta是可以通过的(写数组应该都能通过),但明显没有下一种好 ...

最新文章

  1. shell脚本中的括号和实例
  2. mysql contains函数_多属性、多分类MySQL模式设计
  3. C#使用集合组织相关数据
  4. vb获取数组长度_如何实现数组的二分查找
  5. 【Windows CMD】设置编码格式
  6. 曼哈顿交易 - 题解
  7. SONIC架构简要分析-数据库
  8. 【数学建模】五:MATLAB优化模型求解方法(1):标准模型
  9. 递归算法php,php递归算法经典实例
  10. Linux-shell篇之while用法
  11. zscore标准化步骤_matlab标准化和反标准化——zscore
  12. 异方差检验 python_stata教程03-异方差的检验和处理
  13. 修改assets文件内容
  14. 齐聚一堂:共话网络安全人才培养新模式
  15. 为什么RSA 公钥指数(e=65537)
  16. 什么是.NET?什么是.NET Framework?什么是.NET Core?
  17. 该应用程序从products.json加载数据
  18. 《管理长歌行》——青蛙与蜘蛛的对话
  19. 2020-03-12-脑电分析之线性与非线性变换
  20. 2021长城杯pwn部分wp

热门文章

  1. 通过Nginx反向代理,实现远程调试本机代码
  2. Java中static变量作用和用法详解
  3. php xml cdata 解析,![CDATA[文本内容]]代表的意思
  4. 清除Docker中所有为<none>的镜像(虚悬镜像)
  5. java基础面试题之:i++与++i的区别
  6. 推荐系统和搜索引擎的关系
  7. shell基础07 函数
  8. 500 cannot be cast to javax.xml.registry.infomodel
  9. springboot启动mybatis
  10. SQL Server 数据库中的几个常见的临界值