單鏈表的基本操作及基本實現如下:
#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...