資料結構複習 之 乙個簡單雙向鍊錶的實現

2022-03-29 08:21:21 字數 2113 閱讀 2971

1. 什麼時候能默寫出來呢?

#include 

<

iostream

>

using

namespace

std;

struct

node

;class

link

void

insertnode();

void

insertnode(node

*ptr);

void

insertnodeathead(node

*ptr);

void

insertnodeattail(node

*ptr);

void

deletenodeathead();

void

deletenodeattail();

void

showlist();

void

finddata(

intdata);

private

:node

*head_ptr;

node

*tail_ptr;

};void

link::insertnode()

insertnode(p);

}void

link::insertnode(node

*ptr)

if(head_ptr

->

next

==null)

if(head_ptr

->

next

!=null)

if(current_ptr

==head_ptr)

insertnodeathead(ptr);

else

if(current_ptr

==null)

insertnodeattail(ptr);

//如果沒有查詢完整個表,並且滿足排序條件的

//輸出,欲插入的節點應該插入到current_ptr之前

else

return;}

}void

link::insertnodeathead(node

*ptr)

void

link::insertnodeattail(node

*ptr)

void

link::showlist()

while

(current_ptr

!=null)

cout

<<

endl;

}void

link::deletenodeathead()

node

*current_ptr

=head_ptr;

head_ptr

=head_ptr

->

next;

head_ptr

->

prior

=null;

delete current_ptr;

}void

link::deletenodeattail()

void

link::finddata(

intdata)

intcount =0

;node

*current_ptr

=head_ptr;

while

(data

>

current_ptr

->

data

&¤t_ptr

->

next

!=null)

if(current_ptr

!=null)

cout

<<

"已經找到元素,在第

"<<

count

<<"位

"<<

endl;

else

cout

<<

"沒有找到,不存在

"<<

endl;

}int

main()

資料結構 鍊錶 雙向鍊錶

注意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 ...