c++如何实现静态链表

  介绍

这篇文章主要讲解了c++如何实现静态链表,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。

<强>一、动态链表和静态链表区别:

(1)动态链表:

 C + +如何实现静态链表

(2)静态链表:,,,,,,应用:二叉树

 C + +如何实现静态链表

<强>二、思路:

1。结点设置:T数据;

,,,,,,,,,,,,,,,,,,,,, int联系;

2 .链表要用一个铁砧来保存可分配空间的首地址;

3。初始化:引入头结点:elem [0];

,,,,,,,,,,,,,,,,,,头结点先指向空NULL,用1表示,

,,,,,,,,,,,,,,,,,,铁砧存储空分配的空间的首地址1;

,,,,,,,,,,,,,,,,,,然后让其它可分配空间的结点的链接指向坐标大一的结点;

<强>三,实现程序:

的ifndef StaticList_h
  #定义StaticList_h
  const int最大尺寸=100;//静态链表大小
  模板& lt;类T>
  struct SLinkNode {
  T数据;//结点数据
  int链接;//结点链接指针
  };
  
  模板& lt;类T>
  类StaticList {
  公众:
  空白InitList ();//初始化
  int长度();//计算静态链表的长度
  int搜索x (T);//在静态链表中查找具有给定值的结点
  int定位(int i);//在静态链表中查找我第个结点
  bool附加x (T);//在静态链表的表尾追加一个新结点
  bool插入(int i T x);//在静态链表第i个结点后插入新结点
  bool删除(int i);//在静态链表中释放我第个结点
  bool isEmpty ();//判链表空否?
  私人:
  SLinkNodeelem(最大尺寸);
  int绒毛蛋白样蛋白;//当前可分配空间首地址
  };
  
  模板& lt;类T>
  空白StaticList
  int StaticList
  int StaticList搜索::x (T) {//在静态链表中查找具有给定值的结点
  int p=elem [0] . link;//指针p指向链表第一个结点
  
  而(p !=1){//逐个结点检测查找给定的值
  如果(elem [p]。data=https://www.yisu.com/zixun/=x)
  打破;
  其他的
  p=elem [p] . link;
  }
  返回p;
  }
  
  模板<类T>
  int StaticList ::定位(int i) {//在静态链表中查找我第个结点
  如果(我<0)//参数不合理
  返回1;
  如果(i==0)
  返回0;
  int j=1, p=elem [0] . link;
  而(p !=1 & & j <我){//循链查找第我号结点
  p=elem [p] . link;
  + +;
  }
  返回p;
  }
  
  模板<类T>
  bool StaticList ::附加x (T) {//在静态链表的表尾追加一个新结点
  如果(铁砧==1)//没有分配到存储空间
  返回错误;
  int q=绒毛蛋白样蛋白;//分配结点
  铁砧=elem[铁砧]. link;//指向下一个可分配的结点
  elem[问]。数据=x;
  elem[问]。链接=1;
  int p=0;//查找表尾
  而(elem [p]。链接!=1)
  p=elem [p] . link;
  elem [p]。链接=问;//追加
  返回true;
  }
  
  模板<类T>
  bool StaticList ::插入(int i T x) {//在静态链表第i个结点后插入新结点
  int p=定位(我);
  
  如果(p==1)//找不到结点
  返回错误;
  int q=绒毛蛋白样蛋白;//分配结点
  铁砧=elem[铁砧]. link;
  elem[问]。数据=x;
  elem[问]。链接=elem [p] . link;//链入
  elem [p]。链接=问;
  返回true;
  }
  
  模板<类T>
  bool StaticList ::删除(int i) {//在静态链表中释放我第个结点
  int p=定位(张);
  
  如果(p==1)//找不到结点
  返回错误;
  int q=elem [p] . link;//第我号结点
  elem [p]。链接=elem[问]. link;
  elem[问]。链接=绒毛蛋白样蛋白;//释放,让问的链接指向原可分配的结点
  铁砧=问;//铁砧指向q
  返回true;
  }
  
  模板<类T>
  bool StaticList :: isEmpty () {//判链表空否?
  如果(elem [0]。链接==1)
  返回true;
  返回错误;
  }
  
  # endif/* StaticList_h */

c++如何实现静态链表