分析和思路:先插入节点,然后再打印剩余节点值即可
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 }