天天看點

靜态連結清單的C++簡單實作

簡單實作了一下靜态連結清單,還不知道靜态連結清單有什麼用,純粹當做邏輯鍛煉。

僅僅實作了插入和删除操作,記錄下代碼留作備用:

#include <iostream>

using namespace std;

#define Maxsize 100

struct Node

{

int data;

int cur;

};

class stList

{

private:

Node space[100];

int length;

public:

stList();

~stList(){}

int Mac_sll();

bool Insert(int i, int a);

bool Delete(int i);

void print();

};

stList::stList()

{

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

{

space[i].cur = i + 1;

}

space[Maxsize - 1].cur = 0;

length = 0;

}

int stList::Mac_sll()

{

int i = space[0].cur;

if (space[0].cur) space[0].cur = space[i].cur;

return i;

}

bool stList::Insert(int i, int a)

{

int num = Mac_sll();

int k = Maxsize - 1;

if (i < 1 || i > length + 1)

return false;

if (num)

{

for (int j = 1; j < i; j++)

{

k = space[k].cur;

}

space[k].cur = num;

space[num].cur = space[k].cur;

space[num].data = a;

length++;

return true;

}

else return false;

}

bool stList::Delete(int i)

{

int k = Maxsize - 1;

if (i < 1 || i > length)

return false;

else

{

for (int j = 1; j < i; j++)

{

k = space[k].cur;

}

int temp = space[k].cur;

space[k].cur = space[temp].cur;

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

space[0].cur = temp;

length--;

return true;

}

}

void stList::print()

{

int k = Maxsize - 1;

for (int i = 1; i <= length; i++)

{

k = space[k].cur;

cout<<space[k].data<<" ";

}

cout<<endl;

}

void main()

{

stList list;

list.Insert(1,2);

list.Insert(2,5);

list.Insert(3,6);

list.print();

list.Delete(2);

list.print();

}

繼續閱讀