1. 程式人生 > 其它 >演算法之連結串列刪除指定節點

演算法之連結串列刪除指定節點

分析和思路:先插入節點,然後再列印剩餘節點值即可

 1 //解題思路:
 2 //建立連結串列後,通過不重複的節點,遍歷連結串列,找到待插入的值後,將連結串列插進去即可。
 3 #include "iostream"
 4 using namespace std;
 5 struct ListNode
 6 {
 7     int value;
 8     ListNode* pnext;
 9 }listnode;
10 
11 
12 
13 void InsertList(ListNode* &phead,int insert_value,int node_value)//指標引用可以這樣用嗎?
14 { 15 ListNode* temp=phead; 16 while(temp!=NULL) 17 { 18 if(temp->value!=node_value) 19 { 20 temp=temp->pnext; 21 continue; 22 } 23 24 ListNode* node=temp; 25 ListNode* node_next=node->pnext; 26 27 ListNode *pinsert;
28 pinsert=(ListNode*)malloc(sizeof(ListNode)); 29 pinsert->value=insert_value; 30 31 node->pnext=pinsert; 32 pinsert->pnext=node_next; 33 return; 34 // phead->pnext=NULL; 35 36 37 } 38 } 39 int main() 40 { 41 ListNode *phead; 42 int
number=0; 43 while(cin>>number) 44 { 45 46 47 int head_value=0; 48 cin>>head_value; 49 phead=(ListNode*)malloc(sizeof(ListNode)); 50 phead->value=head_value; 51 phead->pnext=NULL; 52 for(int i=0;i<number-1;i++) 53 { 54 int insert_value=0; 55 int node_value=0; 56 cin>>insert_value; 57 cin>>node_value; 58 59 InsertList(phead,insert_value,node_value); 60 61 } 62 int a=10; 63 cin>>a; 64 ListNode* temp=phead; 65 while(temp!=NULL) 66 { 67 68 if(temp->value==a) 69 { 70 temp=temp->pnext; 71 continue; 72 } 73 else 74 { 75 cout<<temp->value<<" "; 76 temp=temp->pnext; 77 } 78 } 79 cout<<endl; 80 } 81 return 0; 82 }
主要為了自己學習