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