單鏈表及基本操作與實現

2021-10-01 02:01:42 字數 2076 閱讀 5149

單鏈表的基本操作及基本實現如下:

#include

"stdio.h"

#include

"stdlib.h"

typedef

int elemtype;

typedef

struct lnodelnode,

*linklist;

linklist initlist

(linklist &l)

;//初始化鍊錶

bool listinsert

(linklist &l,

int i, elemtype e)

;//在第i個位置之前插入元素(帶頭結點)

bool listheadinsert

(linklist &l)

;//頭插法:linklist listinsert(linklist &l, int 1, elemtype e); 當i為1時,即為頭插法

bool listtailinsert

(linklist &l)

;//尾插法:linklist listinsert(linklist &l, int l.length, elemtype e); 當i為l.length時,即為尾插法

intgetlength

(linklist l)

;lnode *

getelem

(linklist l,

int i)

;//獲取第i個結點的指標

bool listdelet

(linklist &l,

int i, elemtype &e)

;//刪除第i個結點,並用e返回值

intmain()

*/scanf

("%d"

,&s)

;while

(s !=

9999

)for

(i =

1; i <=

getlength

(linklist)

; i++

)listdelet

(linklist,

2, e)

;printf

("\n刪除的元素是:%d\n"

, e)

;for

(i =

1; i <=

getlength

(linklist)

; i++

)return0;

}linklist initlist

(linklist &l)

bool listinsert

(linklist &l,

int i, elemtype e)if(

!p || j > i-1)

//此時,沒有找到p,即i<1 或者 i > length+1

lnode *s =

(lnode*

)malloc

(sizeof

(lnode));

s->data = e;

s->next = p->next;

p->next = s;

return true;

}lnode *

getelem

(linklist l,

int i)

while(p && j < i)

*/ lnode *p = l;

int j =0;

while

(p && j <= i-1)

//注意當i=0時,返回頭結點,當i=1時,返回首結點,所以要取=

return p;

}int

getlength

(linklist l)

return i;

}bool listdelet

(linklist &l,

int i, elemtype &e)

q = p->next;

e = q->data;

p->next = q->next;

free

(q);

return true;

}

C 單鏈表基本操作分析與實現

鍊錶 鍊錶是一種物理儲存單元上非連續 非順序的儲存結構,資料元素的邏輯順序是通過鍊錶中的指標鏈結次序實現的。鍊錶由一系列結點 鍊錶中每乙個元素稱為結點 組成,結點可以在執行時動態生成。每個結點包括兩個部分 乙個是儲存資料元素的資料域,另乙個是儲存下乙個結點位址的指標域。相比於線性表順序結構,鍊錶比較...

C 單鏈表基本操作分析與實現

鍊錶 鍊錶是一種物理儲存單元上非連續 非順序的儲存結構,資料元素的邏輯順序是通過鍊錶中的指標鏈結次序實現的。鍊錶由一系列結點 鍊錶中每乙個元素稱為結點 組成,結點可以在執行時動態生成。每個結點包括兩個部分 乙個是儲存資料元素的資料域,另乙個是儲存下乙個結點位址的指標域。相比於線性表順序結構,鍊錶比較...

單鏈表基本操作的實現

package pac1 class node public void show public class linklist 插入乙個頭結點 public void addheadnode int data 頭插法建立表,將新節點插入到頭結點之後 public void creatlist1 lin...