最簡單的單鏈表,算是模板吧
阿新 • • 發佈:2018-12-19
大部分是師哥寫的,只有刪除節點部分是我寫的,=。=,菜。。。
品質值得信賴,=。=
#include <bits/stdc++.h> using namespace std; struct Node { int data; Node * next; }; Node * CreatLink(int LinkNumber, int data[])//連結串列個數,data { if (LinkNumber <= 0) { cout << "建立連結串列結點數目小於1.\n"; } Node *start = new Node;//定義一個結構體指標,指向新結構體,即新節點。 start->data = data[0]; start->next = NULL; Node * Head, *pre; Head = start; for (int i = 1; i < LinkNumber; ++i) { pre = start;//指向上一個節點 start = new Node; pre->next = start; pre->data = data[i]; } return Head; } bool Insert(Node * Head, int position, int data)//插入 { if (position == 1) { Node * start = new Node; start->data = data; start->next = Head;//結構體成員next Head = start;//將頭節點換了 } else { int _count = 1; Node * current = Head; while (_count != position - 1) { _count++; current = current->next;//連結串列的缺點,從頭開始找 } Node * NewNode = new Node; NewNode->data = data; if (current->next != NULL) { NewNode->next = current->next;//指標!成員? current->next = NewNode;//next存指標 } else { current->next = NewNode; NewNode->next = NULL; } } return true; } bool Delete(Node *Head,int position,int data) { if(position==1) { Node *p; p=Head; Head = Head->next; free(p); } else { Node *z,*x; z=Head; for(int i=1; i<=position-1; i++) { x=z; z=z->next; } if(z->next!=NULL) { x->next=z->next; free(z); } else { x->next=NULL; free(z); } } return true; } int main() { printf("這裡啥也沒有=。=");//可以寫data陣列資料,再存進 return 0; }