數組模擬單鏈表(靜態) 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;
}
*/
往期相關文章