靜態鍊錶 初始化 插入

2021-07-27 08:48:26 字數 2554 閱讀 5142

#include 

#include

#define ok 1

#define true 1

#define error -1

#define false -1

#define overflow -2

#define elemtype int

#define status int

//線性單鏈表 初始化 插入 取出 頭插法 合併公升序排列

//-------------------------------線性單鏈表

typedef

struct lnodelnode, *linklist;//型別重定義struct lnode為lnode,型別重定義 lnode的*指標 為linklist

status initlist_l(linklist &l)

status getelem_l(linklist l,int i,elemtype &e)

if (!p || j>i) return

false;//第i個元素不存在

e = p->data;//取出第i個元素,值為e

return

true;

}//getelem_l

status listinsert_l(linklist &l, int i, elemtype e) //尋找第i個結點,指標下移,j最後停在i

if (!p || j>i) return

false;

s = (linklist)malloc(sizeof(lnode));//生成新節點,開闢記憶體空間 返回指標s,insert

s->data = e;//s->data域的賦值 assignment

s->next = p->next;//指標操作 ,=右往左,指標 指向

p->next = s;

}status listdelete_l(linklist &l, int i, elemtype &e) //尋找第i個結點,下標最後是i-1,指標下移,j最後停在i

if (p->next || j>i - 1) return

false;//刪除位置不合理

q = p->next; //q是被刪除的節點

p->next = q->next;//p的next,指向q->next

e = q->data; //取出 值為e

free(q);//返回值,釋放空間

}lnode * locateelem_l(linklist l, elemtype e) ;//if(!p) p=null;

return p;//時間複雜度o(n)

}void createlist_l(linklist &l, int n)

}void mergelist_l(linklist &la, linklist &lb,)

else //2個結合起來就是小者排前面,這個**寫的真差,不是人類看的,因為c在a和b只見跳來跳去,臨時pc變數拆成2個就容易理解了

}if (pb) q->next = pb;

}//mergelist_l

//-------雙向鍊錶 y

typedef

struct lnode *link, *position;//型別重定義struct lnode * 為link,link * 為 position

status makenode(link &p, elemtype e){}

void freenode(link &p)

typedef

struct dulnode dulnode, *dulinklist;

//------靜態鍊錶 x 使用陣列實現鍊錶,可以在沒有指標的程式語言中實現鍊錶結構

#define max_size 1000

typedef

struct component, staticlinklist[max_size]; //宣告為staticlinklist[max_size]

typedef component slinklist[max_size];

status initlist_sl(staticlinklist &space)

int locateelem_sl(slinklist s, elemtype e)

int malloc_sll(staticlinklist space)

void free_sll(slinklist &space, int k) //free_sll

status listinsert(staticlinklist l, int i, elemtype e)

j = malloc_sll(l);//j表示空閒分量的下標,是當前節點下標指標

if (j)

//執行插入後,指標的變化

l[j].cur = l[k].cur; //翻譯成鍊錶 j->next = p->next 當前下標節點指標下移

l[k].cur = j;//翻譯成鍊錶 p->next = j

return

true;

}return

true;

}

靜態鍊錶的初始化 插入 刪除

include include define ok 1 define true 1 define error 1 define false 1 define overflow 2 define elemtype int define status int 靜態鍊錶 x 使用陣列實現鍊錶,可以在沒有指...

鍊錶初始化

include include include struct node void init node plink int create node plink int insert node plink int print node plink int main void init node plin...

鍊錶初始化總結

順序表 宣告 struct seqlist int last int data 12 seq,seqlist 初始化seqlist init seqlist seqlist sl malloc sizeof seq sl last 1 標記位,用於判斷是表頭還是表尾 return sl 插入操作 判...