Fork me on GitHub

利用数组模拟单链表(静态)

数组模拟单链表(静态) C++语言代码实现

#include <iostream>

using namespace std;

// 利用数组模拟单链表

const int n = 100010;

// head表示头结点的下标
// e[i] 表示节点i的值
// ne[i] 表示节点i的next指针为多少
// idx 表示当前已经使用到了哪个节点
int head, e[n], ne[n], idx;

// 初始化操作
void init()
{
  head = -1;
  idx = 0;
}

/**
 * @brief 将x插入到头结点head后面
 *
 * @param x 新插入的结点值
 */
void add_to_head(int x)
{
  e[idx] = x;     // 元素赋值
  ne[idx] = head; // 新插入的节点指向最后
  head = idx++;   // 头结点指向新插入的节点
}

/**
 * @brief 将x插入到下标为k的节点后面
 * 第一个插入的点下标为0,第二个插入的点下标为1,第k个插入的点下标为k-1
 * @param k 下标
 * @param x 要插入的值
 */
void add(int k, int x)
{
  e[idx] = x;
  ne[idx] = ne[k];
  ne[k] = idx++;
}

/**
 * @brief 将下标为k的节点后面的节点删除
 * @param k 下标
 */
void remove(int k)
{
  ne[k] = ne[ne[k]];
}

void print()
{
  for (int i = head; i != -1; i = ne[i])
  {
    cout << e[i] << ' ';
  }
  cout << endl;
}

/*
int main()
{
  init();
  add_to_head(10);
  print();
  add_to_head(20);
  print();
  add_to_head(30);
  print();
  add_to_head(40);
  print();
  add(1, 55);
  print();
  remove(1);
  print();
  return 0;
}
*/

往期相关文章

posted @ 2024-06-03 10:13  Hui_Li  阅读(12)  评论(0编辑  收藏  举报