<强> c++实现静态单链表的实例强>
利用数组实现的静态单链表,与严蔚敏书实现略有不同,不另设回收空间。有任何错误或错误,希望各位朋友多多反馈~ ~感激不尽
/*作者:Moyiii *电子邮件:lc09@vip.qq.com *静态链表实现,仅作学习之用,当然如果 *你想拿去用,随你好啦。 */# include & lt; iostream> 使用名称空间性病; #定义MAX_LIST_SIZE 100 类节点 { 公众: int数据; int坏蛋; }; 类SLinkList { 公众: SLinkList ();//和普通的线性链表区别不是很大。除了两个分配//和回收节点空间的函数,具体算法请参考课本或//网络资料 int newNode (); bool deleteNode (int pos); pos bool insertElem (int, int elem); bool deleteElem (int pos); int&getElem (int pos); int getLength (); bool isEmpty (); 空白打印(); 空白clear (); 私人: int头;//这个可以不要,默认等于0 int空间; int长度; 节点* elem; }; SLinkList: SLinkList () {//0号位置为头几点,不可以更改,初始指向自己//从1 ~最大长度为可分配节点,最初由空间管理 elem=新节点(MAX_LIST_SIZE); 如果(! elem) { cout & lt; & lt;“Malloc失败!”& lt; & lt;endl; } 头部长度=空间==0; for (int i=0;我& lt;MAX_LIST_SIZE;+ + i) { elem[我]。数据=https://www.yisu.com/zixun/i; elem[我]。坏蛋=i + 1; } elem [MAX_LIST_SIZE - 1]。坏蛋=0; elem [0]。坏蛋=0; 空间=1; }//从空间指向的备用节点链表中取下一个节点 int SLinkList: newNode () { 如果(空间==0) { cout <翱占湟崖?”& lt; & lt;endl; 返回0; } int pos=空间; 空间=elem .cur(空间); elem (pos)。坏蛋=0; 返回pos; }//回收节点空间 bool SLinkList:: deleteNode (int pos) { 如果(pos==0) { cout & lt; & lt;“自由空间”错误!& lt; & lt;endl; 返回错误; } elem (pos)。坏蛋=空间; 空间=pos; 返回true; }//插入节点,思路类似,找到被删除节点的前一个节点//然后更改指向 pos bool SLinkList:: insertElem (int, int elem) { 如果(长度==MAX_LIST_SIZE) { cout & lt; & lt;“空间已满”& lt; & lt;endl; 返回错误; } 如果(pos & lt;1 | | pos祝辞长度+ 1) { cout & lt; & lt;“插入/绑定”& lt; & lt;endl; 返回错误; } int指数=头; for (int i=1;我& lt;=pos - 1;+ + i) { (指数)指数=elem .cur; } int节点=newNode (); 如果(节点==0) { cout & lt; & lt;“太空malloc失败”& lt; & lt;endl; 返回错误; } elem(节点)。数据=https://www.yisu.com/zixun/elem; elem(节点)。坏蛋=elem .cur(指数); elem(指数)。坏蛋=节点; 长度+ +; 返回true; }//一回事,注意把删除的节点回收给空间 bool SLinkList:: deleteElem (int pos) { 如果(pos <1 | | pos>长度) { cout <吧境诘惆蠖?”& lt; & lt;endl; 返回错误; } int指数=头; for (int i=1;我& lt;=pos - 1;+ + i) { (指数)指数=elem .cur; } int节点=elem .cur(指数); elem(指数)。坏蛋=elem .cur(节点); deleteNode(节点); 长度,; 返回true; } 空白SLinkList: print () { int指数=elem .cur(头); 而(指数!=0) { cout & lt; & lt;elem(指数)。数据& lt; & lt;“”; (指数)指数=elem .cur; } cout & lt; & lt;endl; 返回; } int SLinkList: getLength () { 返回长度; } bool SLinkList: isEmpty () { 如果(长度==0) { 返回true; } 其他的 { 返回错误; } } int&SLinkList:: getElem (int pos) { int指数=头; for (int i=1;我& lt;=pos;+ + i) { (指数)指数=elem .cur; } 返回elem(指数). data; } 空白SLinkList: clear () { for (int i=0;我& lt;MAX_LIST_SIZE;+ + i) { elem[我]。数据=https://www.yisu.com/zixun/i; elem[我]。坏蛋=i + 1; } elem [MAX_LIST_SIZE - 1]。坏蛋=0; elem [0]。坏蛋=0; 空间=1; } int main () {//测试数据,测试插入删除空间是否溢出 SLinkList myList; for (int i=1;c++实现静态单链表的实例