資料結構練習 雙向鍊錶

2021-08-11 05:48:07 字數 1759 閱讀 4828

複習一下資料結構。。。。說不准下個星期就用上了

只不過寫的很簡單,沒有封裝

doublelinklist.h

#ifndef guard_doublelinklist_h

#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

doublelinklist.cpp

#include "

doublelinklist.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;

}

main.cpp

#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 ...