資料結構——單連結串列的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++
- js實現資料結構--單連結串列JS資料結構
- 【資料結構】連結串列(單連結串列實現+詳解+原碼)資料結構
- 資料結構-單連結串列、雙連結串列資料結構
- 資料結構-2.單向連結串列的實現資料結構
- 資料結構之php實現單向連結串列資料結構PHP
- 資料結構實驗之連結串列五:單連結串列的拆分資料結構
- 用c語言實現資料結構——單連結串列C語言資料結構
- 資料結構--單連結串列(通過陣列實現)資料結構陣列
- 資料結構——單連結串列介面實現(C語言)資料結構C語言
- 連結串列-單連結串列實現
- 資料結構(雙向連結串列的實現)資料結構
- 資料結構之單連結串列資料結構
- 資料結構04——單連結串列資料結構
- 資料結構和演算法——Go實現單連結串列並且反轉單連結串列資料結構演算法Go
- 探索資料結構:單連結串列的實戰指南資料結構
- C++資料結構連結串列的基本操作C++資料結構
- 演算法與資料結構-連結串列((linked-list)-Java實現單向連結串列演算法資料結構Java
- [資料結構]連結串列的實現在PHP中資料結構PHP
- [資料結構] 連結串列的實現在 PHP 中資料結構PHP
- 6-C/C++實現資料結構連結串列相關操作C++資料結構
- 資料結構之連結串列篇(單連結串列的常見操作)資料結構
- php實現基本資料結構之連結串列PHP資料結構
- 資料結構-雙向連結串列(Python實現)資料結構Python
- 資料結構--陣列、單向連結串列、雙向連結串列資料結構陣列
- java實現單連結串列、棧、佇列三種資料結構Java佇列資料結構
- 基本資料結構實現--單連結串列【含測試程式碼】資料結構
- 資料結構_連結串列的原理與應用1_單連結串列(基於C語言實現)資料結構C語言
- 資料結構實驗之連結串列三:連結串列的逆置資料結構
- 資料結構實驗之連結串列六:有序連結串列的建立資料結構
- 【C++ 資料結構:連結串列】二刷LeetCode707設計連結串列C++資料結構LeetCode
- 資料結構-連結串列資料結構
- 連結串列-資料結構資料結構
- 資料結構 - 連結串列資料結構
- 資料結構--連結串列資料結構
- 資料結構—連結串列資料結構
- 資料結構實驗之連結串列七:單連結串列中重複元素的刪除資料結構
- 【資料結構】線性表-單連結串列資料結構