複習一下資料結構。。。。說不准下個星期就用上了
只不過寫的很簡單,沒有封裝
doublelinklist.h
#ifndef guard_doublelinklist_hdoublelinklist.cpp#define guard_doublelinklist_h#include
struct
listnode
;listnode* getnewnode(int
value);
void insert(listnode*& head,int
value);
void delete(listnode*& head,int
value);
void printlist(const listnode*head);
void reverseprintlist(listnode*head);
void destroylist(listnode*&head);
listnode* gettailptr(listnode*head);
#endif
#include "main.cppdoublelinklist.h
"listnode* getnewnode(int
value)
//在尾部插入資料域為value的節點
void insert(listnode*& head,int
value)
if(previousptr==null)
head=getnewnode(value);
else}//
刪除所有資料域為value的節點
void delete(listnode*& head,int
value)
else
}
else
}}void printlist(const listnode*head)
printf("\n
");}void reverseprintlist(listnode*head)
printf("\n
");}void destroylist(listnode*&head)
}listnode* gettailptr(listnode*head)
return
previousptr;
}
#include "doublelinklist.h
"int
main()
; listnode* head=null;
for(int i=0;i<10;i++)
insert(head,a[i]);
//測試資料
delete(head,1
); delete(head,5);
delete(head,
10);
printf(
"now print the doublelinklist:\n");
printlist(head);
printf(
"now print the reversal doublelinklist:\n");
reverseprintlist(head);
destroylist(head);
printlist(head);
system(
"pause");
return0;
}
資料結構 鍊錶 雙向鍊錶
注意typedef的定義結構,以及dinklist的資料型別 typedef struct dnode dnode,dinklist 注意插入第乙個結點時,prior指標的空指向問題 if l next null 若l後繼結點為空 則省略該步驟 l next prior p 基本 頭插法建立雙向鍊錶...
資料結構 雙向鍊錶
前幾天寫了乙個單向鍊錶,今天參考自己單向鍊錶改寫了乙個雙向非迴圈鍊錶,下面只討論雙向非迴圈鍊錶。雙向非迴圈鍊錶有如下特點 一 雙向鍊錶每個結點都有乙個前驅指標和後驅指標 當然頭結點和尾結點除外 二 雙向鍊錶中的任意乙個結點開始,都可以很方便地訪問它的前驅結點和後繼結點。三 頭結點只有後驅指標沒有前驅...
資料結構 雙向鍊錶
單鏈表的單向性 只能從頭結點開始高效訪問鍊錶中的資料元素。單鏈表還存在另乙個缺陷 逆序訪問時候的效率極低。如下 linklistlist for int i 0 i 5 i for int i list.length 1 i 0 i 根據大o推算法可以得出乙個for迴圈的時間複雜度為o n get ...