C++實現雙向連結串列程式
雙向連結串列是一種資料結構,它由使用自引用結構建立的節點組成。每個節點包含三個部分:資料、指向下一個連結串列節點的引用和指向前一個連結串列節點的引用。
只需要第一個連結串列節點的引用就可以訪問整個連結串列。這被稱為頭節點。連結串列中的最後一個節點不指向任何節點,因此該部分儲存NULL。此外,雙向連結串列可以雙向遍歷,因為每個節點都指向其前一個節點和下一個節點。
實現雙向連結串列的程式如下所示。
示例
#include <iostream>
using namespace std;
struct Node {
int data;
struct Node *prev;
struct Node *next;
};
struct Node* head = NULL;
void insert(int newdata) {
struct Node* newnode = (struct Node*) malloc(sizeof(struct Node));
newnode->data = newdata;
newnode->prev = NULL;
newnode->next = head;
if(head != NULL)
head->prev = newnode ;
head = newnode;
}
void display() {
struct Node* ptr;
ptr = head;
while(ptr != NULL) {
cout<< ptr->data <<" ";
ptr = ptr->next;
}
}
int main() {
insert(3);
insert(1);
insert(7);
insert(2);
insert(9);
cout<<"The doubly linked list is: ";
display();
return 0;
}輸出
The doubly linked list is: 9 2 7 1 3
在上面的程式中,結構體Node構成雙向連結串列節點。它包含資料以及指向下一個和前一個連結串列節點的指標。如下所示。
struct Node {
int data;
struct Node *prev;
struct Node *next;
};函式insert()將資料插入到雙向連結串列的開頭。它建立一個newnode並將數字插入到newnode的資料欄位中。然後,newnode中的prev指標指向NULL(因為它是在開頭插入的),next指標指向head。如果head不為NULL,則head的prev指標指向newnode。最後,head指向newnode,即連結串列從此處開始。如下所示。
void insert(int newdata) {
struct Node* newnode = (struct Node*) malloc(sizeof(struct Node));
newnode->data = newdata;
newnode->prev = NULL;
newnode->next = head;
if(head != NULL)
head->prev = newnode ;
head = newnode;
}函式display()顯示整個雙向連結串列。首先,ptr指向head。然後,它不斷向前移動到下一個節點,直到列印所有節點的資料值。如下所示。
void display() {
struct Node* ptr;
ptr = head;
while(ptr != NULL) {
cout<< ptr->data <<" ";
ptr = ptr->next;
}
}在main()函式中,首先透過呼叫insert()將各種值插入到雙向連結串列中。然後顯示雙向連結串列。如下所示。
int main() {
insert(3);
insert(1);
insert(7);
insert(2);
insert(9);
cout<<"The doubly linked list is: ";
display();
return 0;
}
廣告
資料結構
網路
關係資料庫管理系統(RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP