雙向鍊錶也叫雙鏈表,是鍊錶的一種,它的每個資料結點中都有兩個指標,分別指向直接後繼和直接前驅。所以,從雙向鍊錶中的任意乙個結點開始,都可以很方便地訪問它的前驅結點和後繼結點。一般我們都構造雙向迴圈鍊錶。
雙鏈表的基本操作有以下:
dlistnode*
buydlistnode
(datatype x)
; //申請記憶體空間
dlistnode*
dlistinit
();
//初始化
void
dlistdestory
(dlistnode* head)
; //銷毀
void
dlistprint
(dlistnode* head)
;//列印
void
dlistpushback
(dlistnode* head, datatype x)
;//後插
void
dlistpushfront
(dlistnode* head, datatype x)
;//頭插
void
dlistpopback
(dlistnode* head)
;//後刪
void
dlistpopfront
(dlistnode* head)
;//前刪
dlistnode*
dlistfind
(dlistnode* head, datatype x)
;//尋找指定值
void
dlistinsert
(dlistnode* pos, datatype x)
;//插入
void
dlisterase
(dlistnode* pos)
;//刪除該數
申請記憶體空間
dlistnode*
buydlistnode
(datatype x)
//申請記憶體空間
newnode->_data = x;
newnode->_next = newnode;
}
初始化雙鏈表
dlistnode* dlistinit(datatype x)
//初始化
後插
void dlistpushback(dlistnode* head, datatype x)
//後插
cur
= cur->
_next;
cur
->
_next = newnode;
newnode
->
_prev = cur;
newnode
->
_next = head;
head
->
_prev = newnode;
}
頭插
void dlistpushfront(dlistnode* head, datatype x)
//頭插
head
->
_next
->
_prev = newnode;
newnode
->
_next
= head->
_next;
head
->
_next = newnode;
newnode
->
_prev = head;
}
後刪
void dlistpopback(dlistnode* head)
//後刪
}
前刪
void dlistpopfront(dlistnode* head)
//前刪
}
尋找指定值
dlistnode* dlistfind(datatype x)
//尋找指定值
else
}
插入
void dlistinsert(dlistnode* pos, datatype x)
//插入
刪除該數
void dlisterase(dlistnode* pos, datatype x)
//刪除該數
銷毀
void dlistdestory(dlistnode* head)
//銷毀
free(head);
}
列印
void
dlistprint
(dlistnode* head)
//列印
雙鏈表基本操作
1.在頭接點插入指定的值 template void insertd dnode front,const t value 2.顯示所有接點數值 template void showd dnode front 3.刪除接點 template void deleted dnode lhs 4。刪除指定資...
雙鏈表基本操作
看歐立奇的 程式設計師面試寶典 的雙向鍊錶部分,發現其中建立雙向鍊錶和刪除鍊錶中得某一點的程式存在問題,現將已經除錯通過的程式貼在下面 include using namespace std define len sizeof dnode typedef struct doublenode dnod...
雙鏈表基本操作
include include using namespace std define null 0 define maxsize 50 struct strlnode void create struct strlnode p,int x 建立雙鏈表 表頭節點 void insertnode str...