设为首页 加入收藏

TOP

C++实现静态链表(一)
2014-04-06 17:34:57 来源: 作者: 【 】 浏览:193
Tags:实现 静态

  C++实现静态链表

  #include

  using namespace std;

  const size_t MAXSIZE =100;

  typedef struct SListNode {

  int data;

  size_t cur;

  }StaticList[MAXSIZE];

  //初始化链表函数

  void InitSList(StaticList & space )

  {

  for(int i=0;i< MAXSIZE -1 ;i++)

  {

  space[i].cur = i+1;

  }

  space[MAXSIZE -1].cur = 0;//构成循环

  }

  //分配节点(只需要返回被分配节点在数组中的下标即可)

  int Malloc_SL(StaticList & space )

  {

  int i = space[0].cur;

  if(i)

  {

  space[0].cur = space[i].cur;//把i节点从空闲链表中删除

  }

  return i;

  }

  //回收节点到空闲链表

  void Free_SLNode(StaticList & space,int t)

  {

  space[t].cur = space[0].cur;

  space[0].cur = t;

  }

  //插入

  bool insert(StaticList & space,int h,int m,int t)//在第t个元素之前插入一个下标值为m的新节点

  {

  if(t<=0)

  {

  return false;

  }

  int i = h;

  int n = 0;//计数器

  while(i)

  {

  if(n == t-1 && space[i].cur)//找到插入节点

  {

  space[m].cur = space[i].cur;

  space[i].cur = m;

  return true;

  }

  i = space[i].cur;

  n++;

  }

  return false;

  }

  //删除第n个节点

  bool dele(StaticList & space,int h, int n)

  {

  if(n<0) return false;

  int i=h;

  int m =0;

  while(i)

  {

  if(m == n-1)

  { int t = space[i].cur;

  space[i].cur = space[t].cur;

  Free_SLNode(space,t);//回收被删除的节点

  return true;

  }

   

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇c++用迭代做直尺刻度 下一篇线性表链式存储C++实现

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·在 Redis 中如何查看 (2025-12-26 03:19:03)
·Redis在实际应用中, (2025-12-26 03:19:01)
·Redis配置中`require (2025-12-26 03:18:58)
·Asus Armoury Crate (2025-12-26 02:52:33)
·WindowsFX (LinuxFX) (2025-12-26 02:52:30)