傳統的鍊錶不能實現資料和鍊錶的分離,一旦資料改變則鍊錶就不能用了,就要重新開發。
如上說示:外層是teacher,裡面小的是node.
#ifndef _mylinklist_h_#define _mylinklist_h_typedef
void linklist;//
鍊錶上下文,任意型別
typedef
struct
_tag_linklistnode
linklistnode;//
節點linklist*linklist_create();
void linklist_destroy(linklist*list);
void linklist_clear(linklist*list);
int linklist_length(linklist*list);
int linklist_insert(linklist* list, linklistnode* node, int
pos);
linklistnode* linklist_get(linklist* list, int
pos);
linklistnode* linklist_delete(linklist* list, int
pos);
#endif
#define _crt_secure_no_warnings #include#include
#include
#include
"linklist.h
"typedef
struct _tag_linklist//
這個鍊錶的上下文資訊,類似於handle.這裡面是鍊錶的頭結點和鍊錶的長度。
tlinklist;
linklist* linklist_create() //
o(1)
memset(tmp,
0, sizeof
(tlinklist));
tmp->length = 0
; tmp->header.next = null; //
return
tmp;
}void linklist_destroy(linklist* list) //
o(1)
free(list);
//只把上下文資訊釋放。因為加進去的teacher物件是區域性的,main函式執行完後會自動釋放,所以這裡不用手動釋放。
return;}
void linklist_clear(linklist* list) //
o(1)
tlist->header.next =null;
tlist->length = 0
;
return;}
int linklist_length(linklist* list) //
o(1)
return tlist->length;
}int linklist_insert(linklist* list, linklistnode* node, int pos) //
在pos位置插入節點,先連線後面的再連線前面的。
tlist = (tlinklist *)list;
current = &(tlist->header);//
節點要取位址給指標
for (i=0; i//
鍊錶節點序號從0開始
//先連線後面節點在連線前面節點
node->next = current->next;
//前面的鍊錶 連線 新結點
current->next =node;
tlist->length ++;
return0;
}linklistnode* linklist_get(linklist* list, int pos) //
o(n)
current = &(tlist->header); //
賦值指標變數初始化
for (i=0; i)
return current->next;
}linklistnode* linklist_delete(linklist* list, int pos) //
o(n)
current = &(tlist->header);
for (i=0; i)
ret = current->next; //
快取要刪除的結點
current->next = ret->next;
tlist->length --;
return
ret;
}
#define _crt_secure_no_warnings #include#include
#include
#include
"linklist.h"/*
typedef struct _node
node;
typedef struct _teacher1
teacher1;
typedef struct _teacher2
teacher2;
teacher2 t2;
*/typedef
struct
_teacher
teacher;
void
main()
printf(
"age:%d \n
", tmp->age);
}//刪除鍊錶結點
while (linklist_length(list) > 0
)
printf(
"age:%d \n
", tmp->age);
}linklist_destroy(list);
printf(
"hello...\n");
system(
"pause");
return
;}
c 資料結構鍊錶的實現
資料結構中最開始學習實現的就是鍊錶 1 這個標頭檔案 list head 為建立結構體,用來儲存資料 include using namespace std template struct node 建立結構體 template node node template node node type i...
資料結構 鍊錶的實現 C
昨天寫了鍊錶,目前只寫了單鏈表,等有時間把迴圈鍊錶什麼的變異產品再寫出來 只有頭指標 沒有頭結點 的單鏈表 pragma once template struct node template class singlelinkedlist include singlelinkedlist.h temp...
資料結構 鍊錶的c 實現
ifndef my head h define my head h include g code c myhead.h endif my head h template typename elemtype class linklist typedef list node nodepointer 指向...