單連結串列簡單操作一
下面簡單的進行單連結串列的插入刪除銷燬等操作,想重點的說一下,關於連結串列插入的時候,分為三種情況,不過原理都一樣。在尾插的時候,我們沒有遍歷連結串列,不清楚連結串列的長度,如何判斷for迴圈如何終止呢?
由本人水平有限,有錯誤之處,請大家指正!
點選(此處)摺疊或開啟
-
-
#include
-
using namespace std;
-
struct List {
-
-
-
int data;
-
struct List *next;
-
};
-
-
-
List *CreateFirst() {
-
-
-
List *first;
-
first = new List;
-
first->next = NULL;
-
return first;
-
}
-
-
-
List *InitialList(List *first) { //用尾插法建立連結串列,並賦值
-
-
-
List *p, *head;
-
head = first;
-
/* 首插法建立連結串列
-
for (int i = 0; i < 10; i++) {
-
p = new List;
-
p->data = i;
-
p ->next = first ->next;
-
first ->next = p;
-
-
}**/
-
-
for (int i = 0; i < 10; i++) {
-
p = new List;
-
p->data = i;
-
head->next = p;
-
head = p;
-
head->next = NULL;
-
}
-
return first;
-
}
-
-
-
void PrintList(List *first) {
-
-
-
do {
-
-
-
first = first->next;
-
cout << first->data << " ";
-
-
} while (first != NULL);
-
}
-
-
-
int PrintLength(List *first) {
-
-
-
int i = 0;
-
for (List *q = first; q !=NULL ; q = q->next) {
-
-
-
i++;
-
}
-
return i-1;
-
}
-
-
-
int Delete(List *first, int i) {
-
-
-
List *s;
-
int ddata;
-
int count = 0;
-
for (int j = 0; j < i - 1; j++) {
-
-
-
first = first->next;
-
count++;
-
}
-
-
-
s = first->next;
-
ddata = (*s).data;
-
first->next = s->next;
-
delete s;
-
return ddata;
-
}
-
-
-
void InsertList(List *first, int i, int x) {
-
-
-
/* List *s; // 插入連結串列首部
-
int ddata;
-
s = new List;
-
s->data = x;
-
s->next = first->next;
-
first->next = s; */
-
-
-
/* List *s; //插入兩結點之間
-
int ddata;
-
for (int j = 0; j < i - 1; j++) {
-
-
-
first = first->next;
-
}
-
s = new List;
-
s->data = x;
-
s->next = first->next;
-
first->next = s; */
-
-
-
List *s; // 插入連結串列尾部
-
int ddata;
-
for (; first->next != NULL; first = first->next);
-
s = new List;
-
s->data = x;
-
s->next = first->next;
-
first->next = s;
-
-
}
-
-
-
void DestroyList(List *first) {
-
-
-
while (first != NULL) {
-
List *s;
-
s = first;
-
first = first->next;
-
delete s;
-
}
-
}
-
void main() {
-
-
-
List *s, *t;
-
s = CreateFirst();
-
t = InitialList(s);
-
cout << Delete(t, 3) << endl;
-
//InsertList(t, 3, 11);
-
PrintList(t);
-
DestroyList(t);
-
- }
-
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29876893/viewspace-1814392/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料結構之連結串列與陣列(3):單向連結串列上的簡單操作資料結構陣列
- 線性表中的單向連結串列的簡單操作
- 資料結構之連結串列與陣列(2):單向連結串列上的簡單操作問題資料結構陣列
- 02-單連結串列的操作
- C++連結串列類的簡單操作含圖書結構體 簡單易懂C++結構體
- 連結串列基礎2(超簡單)--單連結串列的插入和刪除
- 連結串列-單連結串列實現
- 單連結串列學習(一)
- 迴圈雙連結串列的簡單操作
- 資料結構之連結串列篇(單連結串列的常見操作)資料結構
- 反轉連結串列(C++簡單區)C++
- 菜鳥圖解簡單連結串列(轉)圖解
- C++單連結串列遞迴遍歷操作C++遞迴
- python單連結串列Python
- 單連結串列實現
- Java 單連結串列逆序Java
- 單連結串列學習
- 棧_單向連結串列
- 實戰資料結構(1)_單連結串列的操作資料結構
- leetcode:21. 合併兩個有序連結串列(連結串列,簡單)LeetCode
- 資料結構-單連結串列、雙連結串列資料結構
- C語言單向連結串列的增刪操作C語言
- 畫江湖之資料結構【第一話:連結串列】單向連結串列資料結構
- 畫江湖之資料結構 [第一話:連結串列] 單向連結串列資料結構
- 簡單介紹python中的單向連結串列實現Python
- 單向迴圈連結串列
- 佇列_單向連結串列佇列
- 資料結構系列之單連結串列實現一個簡單的LRU演算法資料結構演算法
- 資料結構與演算法——連結串列 Linked List(單連結串列、雙向連結串列、單向環形連結串列-Josephu 問題)資料結構演算法
- 連結串列面試題(一)---刪除一個無頭單連結串列的非尾結點面試題
- 用單連結串列實現多項式加,減,乘,簡單微分
- 單連結串列的插入刪除操作(c++實現)C++
- 連結串列操作
- 資料結構04——單連結串列資料結構
- 資料結構之單連結串列資料結構
- 結點插入到單連結串列中
- 資料結構--陣列、單向連結串列、雙向連結串列資料結構陣列
- go 實現單向連結串列Go