資料結構——單連結串列的C++實現
資料結構——單連結串列的C++實現
\qquad 單連結串列的建立、求長度、查詢、插入和刪除的C++實現。
#include<iostream>
using namespace std;
//1.定義
struct Node {
int num;
Node* next;
};
typedef Node* List;
void input(int* a)
{
cin >> *a;
}
//2.建立連結串列
void CreateList(List* L, int n, void (*input)(int* a))
{
List s;
*L = new Node;
(*L)->next = NULL;
List LL = *L;
LL->num = 1000;
for (; n > 0; n--) {
s = new Node;
input(&s->num);
s->next = (*L)->next;
(*L)->next = s;
}
}
//3.連結串列長度
int Length(List L)
{
List p = L;
int j = 0;
while (p)
{
p = p->next;
j++;
}
return j;
}
//4.按序號查詢
List FindKth(int k, List Ptrl)
{
List p = Ptrl;
int i = 1;
while (p != NULL && i < k) {
p = p->next;
i++;
}
if (i == k)return p;
else return NULL;
}
//5.按值查詢
List Find(int x, List Ptrl)
{
List p = Ptrl;
while (p != NULL && p->num != x) {
p = p->next;
}
return p;
}
//6.插入
List Insert(int x, int i, List Ptrl)
{
List p, s;
if (i == 1) {
s = new Node;
s->num = x;
s->next = Ptrl;
return s;
}
p = FindKth(i - 1, Ptrl);
if (p == NULL) {
cout << "引數i錯" << endl;
return NULL;
}
else {
s = new Node;
s->num = x;
s->next = p->next;
p->next = s;
return Ptrl;
}
}
//7.刪除
List Delete(int i, List Ptrl)
{
List p, s;
if (i == 1) {
s = Ptrl;
Ptrl = Ptrl->next;
delete s;
return Ptrl;
}
p = FindKth(i - 1, Ptrl);
if (p == NULL) {
cout << "第" << i - 1 << "個結點不存在" << endl;
return NULL;
}
else if (p->next == NULL) {
cout << "第" << i << "個結點不存在" << endl;
return NULL;
}
else {
s = p->next;
p->next = s->next;
delete s;
return Ptrl;
}
}
int main()
{
List L;
int n;
int len;
cin >> n;
CreateList(&L, n, input);
cout << "--------------------------" << endl;
int i;
List L1 = L;
for (i = 0; i < n; i++) {
L1 = L1->next;
cout << L1->num << endl;
}
cout << "--------------------------" << endl;
List L2 = L;
L2 = Delete(2, L2);
for (i = 0; i < n-1; i++) {
L2 = L2->next;
cout << L2->num << endl;
}
return 0;
}
相關文章
- 資料結構 - 單連結串列 C++ 實現資料結構C++
- 【資料結構】實現單連結串列(c++)資料結構C++
- js實現資料結構--單連結串列JS資料結構
- 【資料結構】連結串列(單連結串列實現+詳解+原碼)資料結構
- 【資料結構】實現迴圈連結串列(c++)資料結構C++
- python 資料結構之單連結串列的實現Python資料結構
- 資料結構-2.單向連結串列的實現資料結構
- 資料結構之php實現單向連結串列資料結構PHP
- 資料結構實驗之連結串列五:單連結串列的拆分資料結構
- 資料結構-單連結串列、雙連結串列資料結構
- c++實現單連結串列C++
- 資料結構學習(C++)——單連結串列(定義與實現) (轉)資料結構C++
- 資料結構——單連結串列介面實現(C語言)資料結構C語言
- 資料結構--單連結串列(通過陣列實現)資料結構陣列
- 用c語言實現資料結構——單連結串列C語言資料結構
- 連結串列-單連結串列實現
- Python資料結構——連結串列的實現Python資料結構
- 資料結構(雙向連結串列的實現)資料結構
- 資料結構04——單連結串列資料結構
- 資料結構之單連結串列資料結構
- 資料結構和演算法——Go實現單連結串列並且反轉單連結串列資料結構演算法Go
- 實戰資料結構(1)_單連結串列的操作資料結構
- C++資料結構連結串列的基本操作C++資料結構
- [資料結構]連結串列的實現在PHP中資料結構PHP
- [資料結構] 連結串列的實現在 PHP 中資料結構PHP
- 帶頭結點的單連結串列實現(C++)C++
- 單連結串列的歸併(資料結構)資料結構
- 資料結構之連結串列篇(單連結串列的常見操作)資料結構
- php實現基本資料結構之連結串列PHP資料結構
- 【資料結構】遞迴實現連結串列逆序資料結構遞迴
- 實戰資料結構(9)_單連結串列實現多項式的相乘資料結構
- 6-C/C++實現資料結構連結串列相關操作C++資料結構
- 實戰資料結構(10)_單連結串列的就地排序資料結構排序
- 資料結構--陣列、單向連結串列、雙向連結串列資料結構陣列
- javascript的資料結構快速學-連結串列的實現JavaScript資料結構
- 基本資料結構實現--單連結串列【含測試程式碼】資料結構
- java實現單連結串列、棧、佇列三種資料結構Java佇列資料結構
- 演算法與資料結構-連結串列((linked-list)-Java實現單向連結串列演算法資料結構Java