编程语言
首页 > 编程语言> > 算法之链表删除指定节点

算法之链表删除指定节点

作者:互联网

 

 分析和思路:先插入节点,然后再打印剩余节点值即可

 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 }

 

标签:node,ListNode,temp,value,链表,算法,phead,节点,pnext
来源: https://www.cnblogs.com/technologykeeping/p/15973959.html