迴圈雙連結串列的簡單操作
下面是迴圈雙連結串列的簡單操作,其中很多細節沒有考慮到,比如沒有判斷空連結串列,目的提供思想,如有出現錯誤,請大家指正!
點選(此處)摺疊或開啟
-
#include<iostream>
-
//#include<stdlib.h>
-
using namespace std;
-
struct List {
-
-
int data;
-
struct List *last, *next;
-
};
-
-
List *CreateList() {
-
-
List *first;
-
first = new List; //first = (List *)malloc(sizeof(List));
-
first->next = first;
-
first->last = first;
-
return first;
-
}
-
-
List *InitialList(List *first) {
-
-
List *p, *head;
-
head = first;
-
for (int i = 0; i < 5; i++) {
-
-
p = new List;
-
p->data = i;
-
p->last = head;
-
head->next = p;
-
-
head = p;
-
}
-
-
first->last = head;
-
head->next = first;
-
return first;
-
}
-
-
void PrintList(List *first){
-
List *q = first;
-
first = first->next;
-
cout << "正序列印:";
-
for (; first != q; first = first->next) {
-
-
cout << first->data << " ";
-
}
-
-
cout << endl;
-
-
List *p = first;
-
first = first->last;
-
cout << "逆序列印:";
-
for (; first != p; first = first->last) {
-
-
cout << first->data << " ";
-
}
-
}
-
-
void InsertList(List *first,int i,int x) {
-
-
List *head, *p;
-
head = first;
-
-
for (int j = 0; j < i - 1; j++) {
-
-
head = head->next;
-
}
-
-
p = new List;
-
p->data = x;
-
p->last = head;
-
p->next = head->next; //P
-
head->next->last = p;
-
head->next = p; //該過程操作有順序,該步一定要在P之後,否則會覆蓋head ->next
-
-
}
-
-
void DeleteList(List *first, int i) {
-
-
List *head, *p;
-
head = first;
-
-
for (int j = 0; j < i; j++) {
-
-
head = head->next;
-
}
-
-
p = head;
-
head->last->next = head->next; //由於是迴圈雙連結串列,可以直接以刪除點為中心操作
-
head->next->last = head->last;
-
delete p;
-
p = NULL;
-
-
first = first->next;
-
-
for (; !first; first = first->next) {
-
-
cout << first->data << " ";
-
}
-
-
}
-
void DestoryList(List *first){
-
-
List *p, *head;
-
head = first;
-
while(head !=first){
-
-
p = head;
-
head = head ->next;
-
delete p;
-
-
}
-
delete first; //一定要銷燬頭指標
-
first = NULL; //為了防止出現迷途指標,將頭結點置空
-
cout << "連結串列已經銷燬" << endl;
-
exit(0);
-
}
-
-
int main() {
-
-
List *s,*t;
-
s = CreateList();
-
t = InitialList(s);
-
DestoryList(t);
-
//InsertList(t, 3, 11);
-
//DeleteList(t,4);
-
PrintList(t);
- }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29876893/viewspace-1814415/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 單雙連結串列
- 4-雙連結串列的操作
- 單向迴圈連結串列
- 資料結構-單連結串列、雙連結串列資料結構
- 單鏈迴圈連結串列(初版
- 單向迴圈連結串列的介面程式
- 單向迴圈連結串列的實現
- 連結串列-迴圈連結串列
- 複習下C 連結串列操作(雙向迴圈連結串列,查詢迴圈節點)
- 單向迴圈連結串列大綱
- 設計單向迴圈連結串列的介面
- C語言資料結構:單向迴圈連結串列的增刪操作C語言資料結構
- 連結串列4: 迴圈連結串列
- 單連結串列簡單操作一
- 非迴圈單連結串列的建立、遍歷、排序等排序
- 單向迴圈連結串列——查詢、刪除、插入結點
- 雙向迴圈連結串列基本操作的實現(C語言)C語言
- 實戰資料結構(5)_雙向迴圈連結串列的基本操作資料結構
- 資料結構:單迴圈連結串列的建立插入與刪除資料結構
- C++單連結串列遞迴遍歷操作C++遞迴
- js在Node.js下實現單連結串列與雙連結串列結構Node.js
- 單向迴圈連結串列介面設計(C語言)C語言
- C語言資料結構:雙向迴圈連結串列的增刪操作C語言資料結構
- 資料結構之迴圈連結串列資料結構
- 線性表中的單向連結串列的簡單操作
- 【資料結構】雙連結串列(c++)資料結構C++
- c/c++ 線性表之單向迴圈連結串列C++
- 資料結構之連結串列與陣列(3):單向連結串列上的簡單操作資料結構陣列
- 圖解雙連結串列(Java實現)圖解Java
- C++連結串列類的簡單操作含圖書結構體 簡單易懂C++結構體
- 【LeetCode】 Rotate List 迴圈連結串列LeetCode
- 【資料結構】雙迴圈連結串列(c++)資料結構C++
- Linux核心之資料雙連結串列Linux
- 雙向迴圈連結串列的介面設計(初版
- 資料結構之連結串列與陣列(2):單向連結串列上的簡單操作問題資料結構陣列
- 02-單連結串列的操作
- 深入理解Redis 資料結構—雙連結串列Redis資料結構
- 簡單的 for 迴圈也會踩的坑