最近複習了c語言的一些知識,使用c語言實現了資料結構中的鍊錶。
下面是main.c檔案:
#include
"linklist.h"
#include
intmain()
printf
("len = %d\n\n"
,linklistlength
(list));
for(i =
0; i <
5; i++
)printf
("len = %d\n\n"
,linklistlength
(list));
i =0;
printf
("開始列印鍊錶:\n");
for(
linklistmove
(list,0)
;!linklistend
(list)
;linklistnext
(list)
, i++)
list =
linklistdestroy
(list);}
return0;
}
下面是linklist.**件
#ifndef __linklist_h__
#define __linklist_h__
typedef
int datatype;
#define debug() printf("file = %s\nline = %d\n", __file__, __line__)
#include
#include
#ifndef __cplusplus
typedef
enum
bool;
else
typedef bool bool;
#endif
#define malloc(type, size) (type*)malloc(sizeof(type) * size)
#define free(p) (free(p), p = null)
#define struct(type) typedef struct __struct##type type;\
struct __struct##type
struct
(llnode)
;struct
(linklist)
;linklist*
linklistcreate
(void);
linklist*
linklistdestroy
(linklist *list)
;int
linklistlength
(linklist *list)
;bool linklistinsert
(linklist *list,
int i, datatype data)
;bool linklistdelete
(linklist *list,
int i, datatype *data)
;int
linklistfind
(linklist *list, datatype data)
; bool linklistset
(linklist *list,
int i, datatype data)
;bool linklistget
(linklist *list,
int i, datatype *data)
;llnode*
linklistmove
(linklist *list,
int i)
;bool linklistend
(linklist *list)
;void
linklistnext
(linklist *list)
;datatype linklistcurrent
(linklist *list)
;#endif
下面是linklist.c檔案
#include
"linklist.h"
linklist*
linklistcreate
(void
)//o(1)
return list;
}linklist*
linklistdestroy
(linklist *list)
//o(n)
free
(list);}
return
null;}
intlinklistlength
(linklist *list)
//o(1)
bool linklistinsert
(linklist *list,
int i, datatype data)
//o(n)
else
list->len++;}
else
}return ret;
}bool linklistdelete
(linklist *list,
int i, datatype* data)
//o(n)
else
free
(node)
; list->len--;}
return ret;
}bool linklistset
(linklist *list,
int i, datatype data)
//o(n)
bool linklistget
(linklist *list,
int i, datatype* data)
//o(n)
//下面四個配合使用用於遍歷鍊錶,時間複雜度為o(n)
llnode*
linklistmove
(linklist *list,
int i)
ret = node;
list->m_current = node;}}
return ret;
}bool linklistend
(linklist *list)
void
linklistnext
(linklist *list)
}datatype linklistcurrent
(linklist *list)
intlinklistfind
(linklist *list, datatype data)
//o(n)}}
return ret;
}
下面是dos執行的結果:
雙向鍊錶 基於C語言
最近複習了c語言的相關知識,實現了資料結構裡面的雙向鍊錶。下面是main.c檔案 include duallinklist.h include intmain printf 開始列印鍊錶 n i 0 for duallinklistmove list,duallinklistlength list ...
C語言基於鍊錶的佇列
寫了乙個基於鍊錶的佇列,非常簡單,只提供了初始化,判斷是否為空,銷毀,入隊和出隊操作,可以很容易的嵌入到工程中去。只提供了很少的注釋,好的 是可以自注釋的,另外如果對於c語言和佇列這個資料結構較熟悉的話,看懂我的 裡的一些指標操作是很容易的。在最下面提供了乙個測試程式,也可以看成使用指南,queue...
C語言基於鍊錶的棧
學習資料結構與演算法時實現的棧,參考書目 資料結構與演算法分析 c語言描述 以及在後面會分析我遇到的乙個問題。標頭檔案 stack.h 功能 基於鍊錶的棧,棧頂在表頭 ifndef stack header h define stack header h typedef struct node pn...