資料結構:單鏈表建立、結點插入、刪除程式碼
阿新 • • 發佈:2021-01-05
基於C++的實現
#define _CRI_SECURE_NO_WARNINGS #include<iostream> #include"stdlib.h" #include"time.h" using namespace std; constexpr auto maxsize = 20; constexpr auto OK = 1; constexpr auto ERROR = 0; constexpr auto TRUE = 1; constexpr auto FAlSE = 0; typedef int ElemType; //用ELemType代表int型別 typedef int status; typedef struct Node { ElemType data; struct Node* next; }Node; typedef struct Node LinkList; //將struct Node* 定義為LinkList LinkList* CreateLinklist(LinkList* L, int n) //尾插法建立單鏈表 { LinkList* p; int i; srand(time(0)); // L = new LinkList; L->next = NULL; for (i = 0; i < n; i++) { p = new LinkList; p->data = i; p->next = L->next; L->next = p; } return L; } int Getelem(LinkList* L, int i, ElemType* e) //獲取連結串列中的某個元素 { int j; LinkList* p; p = L->next; j = 1; while (p != NULL && j < i) { p = p->next; ++j; } if (!p || j > i) { return ERROR; } *e = p->data; return *e; } status InsertNode(LinkList* L, int i,ElemType e)//插入結點 { int j; LinkList* p=L; LinkList* s; j = 0; while (j < i && p!= nullptr) { p = p->next; ++j; } if (p == nullptr || j > i) { return ERROR; } s = new LinkList; s->data = e; s->next = p->next; p->next = s; return OK; } status DeleteNode(LinkList* L, int i) //刪除節點 { int j; j = 0; LinkList* s; LinkList* p; p = L; if (j < i && p != nullptr) { p = p->next; ++j; } if (p == nullptr || j > i) { return ERROR; } s = p->next; p->next = s->next; s->next = NULL; delete(s); return OK; } status DeleteList(LinkList* L) //刪除單鏈表 { LinkList* p; LinkList* q; p = L->next; while (p) { q = p->next; delete(p); p = q; } L->next = NULL; return OK; } int main() { LinkList *L=new LinkList; CreateLinklist(L, 5); InsertNode(L, 1, 10); DeleteNode(L, 1); int* b = new int; int a=Getelem(L, 1, b); cout <<a << endl; }