鍊錶的基本操作(c語言實現)
#include
#include
#define ok 1
#define error 0
typedef
int elemtype;
typedef
int status;
typedef
struct lnodelnode,
*linklist;
status initlist_l
(linklist &l)
status emptylist_l
(linklist l)
else
} status destroylisy_l
(linklist &l)
} status clearlist_l
(linklist &l)
l->next==
null
;printf
("清空成功\n");
return ok;
}status lengthlist_l
(linklist l)
return i;
}status getelem_l
(linklist l,
int i,elemtype &e)if(
!p||j>i)
return error;
e=p->data;
return ok;
} lnode *
locateelem1_l
(linklist l,elemtype e)
status locateelem2_l
(linklist l,elemtype e)
if(p)
return j;
else
return0;
}status insertlist_l
(linklist &l,
int i,elemtype e)if(
!p||j>i-1)
return error;
s=(linklist)
malloc
(sizeof
(lnode));
s->data=e;
s->next=p->next;
p->next=s;
return ok;
}void
display
(linklist l)
}status deletelist_l
(linklist &l,
int i,elemtype &e)if(
!(p->next)
||j>i-1)
return error;
q=p->next;
p->next=q->next;
e=q->data;
free
(q);
return ok;
}int
main()
display
(l);
printf
("刪除第幾個資料\n");
scanf
("%d"
,&i)
;deletelist_l
(l,i,e)
;//刪除
display
(l);
printf
("查詢第幾個資料的值\n");
scanf
("%d"
,&i)
;int e2;
getelem_l
(l,i,e2)
;//取第i個數的值
printf
("第%d個的值為%d\n"
,i,e2);
lnode *e1;
int c;
printf
("請輸入您要查詢的資料\n");
scanf
("%d"
,&c)
;
e1=locateelem1_l
(l,c)
;//查詢 返回l中值e的位址
printf
("位址為%p\n"
,&e1->data)
;printf
("請輸入您要查詢的資料\n");
//查詢 返回l中值e的位置序號
scanf
("%d"
,&c)
; i=
locateelem2_l
(l,c)
;printf
("是第%d個資料\n"
,i);
int a;
a=lengthlist_l
(l);
//求鍊錶長度
printf
("鍊錶長為%d\n"
,a);
clearlist_l
(l);
//清空
destroylisy_l
(l);
//銷毀
}
C語言實現鍊錶基本操作
之前說過順序表的基本操作。顯然,順序表有乙個很大的缺點,就是做插入刪除操作的時候,往往要做很大量的元素移動的操作。這裡我們討論另外一種線性表的表示方法 鏈式儲存結構。由於它不需要邏輯上的相鄰的元素在物理位置上也相鄰,因此它沒有順序儲存結構所具有的弱點,但是同時也失去了順序表的可隨機訪問的有點。inc...
2 8靜態鍊錶基本操作(C語言實現)
上節,我們初步建立了乙個靜態鍊錶 本節學習有關靜態鍊錶 的一些基本操作,包括對錶中資料元素的新增 刪除 查詢和更改。本節是建立在已能成功建立靜態鍊錶的基礎上,因此我們繼續使用上節中已建立好的靜態鍊錶學習本節內容,建立好的靜態鍊錶如圖 1 所示 圖 1 建立好的靜態鍊錶 例如,在圖 1 的基礎,將元素...
鍊錶概念,以及基本操作C語言實現
鍊錶是一種物理儲存結構上非連續 非順序的儲存結構,資料元素的邏輯順序是通過鍊錶中的指標鏈結次序實現的 實際中煉表的結構非常多樣,以下情況組合起來就有8種鍊錶結構 1.單向 雙向 2.帶頭 不帶頭 3.迴圈 非迴圈 帶頭雙向迴圈鍊錶 結構最複雜,一般用在單獨儲存資料。實際中使用的鍊錶資料結構,都是帶頭...