#include<iostream> #include <algorithm> #include <vector> #include <set> #include <map> #include <string> #include <string.h> #include<stack> #include<ctime> #include <sstream> using namespace std; //鏈表的數據結構 struct ListNode { int value; ListNode* next; ListNode () {}; //賦值構造函數 ListNode (int v) : value(v),next(NULL){}; }; // 函數頭聲明 ListNode* arraytolist (vector<int> a); void printlist(ListNode* fir); void insert(ListNode* p, int poi,int in); void deletenode(ListNode* p, int poi); void selectionsort(ListNode* p); // 按下F6進行編譯 int main() { //建立一個鏈表(2,1,4,3,0,4,-1) vector<int> a({2,1,4,3,0,4,-1}); ListNode* b=arraytolist(a); insert(b,2,-10); deletenode(b,2); printlist(b); return 0; } // 根據數組建立一個鏈表 ListNode* arraytolist (vector<int> a) { ListNode* p=new ListNode(a[0]); ListNode* fir=p; for(int i=1;i<a.size();i++) { p->next=new ListNode(a[i]); p=p->next; } return fir; } //遍歷並打印一個鏈表 void printlist(ListNode* fir) { while(fir!=NULL) { cout << fir->value << ' '; fir=fir->next; } cout << endl; } //插入一個節點(後插入) void insert(ListNode* p , int poi ,int in) { if(poi<0 ) return; while((0 < poi--) ) { if(p->next != NULL) p=p->next; else break; } ListNode* mi=new ListNode(in); mi->next=p->next; p->next=mi; } // 刪除節點 void deletenode(ListNode* p, int poi) { if(poi<0) return ; while(0 < poi--) { if(p->next !=NULL) p=p->next; else break; } if(p->next !=NULL) { ListNode *tmp=p->next; p->next=tmp->next; delete tmp; } }