#include<iostream> #include<stdlib.h> using namespace std; typedef struct NODE { int score; struct NODE *next; }node,*link; link head,pnew,pold,temp; void charu(int beg,int end) { if(head==NULL) { pnew=new node; pnew->next =NULL; pnew->score =end; head=pnew; //pold=pnew; } pnew=new node; pnew->next =NULL; pnew->score =beg; temp=head; while(temp->score !=end) temp=temp->next; if(temp->next ==NULL) { temp->next =pnew; } else { pnew->next =temp->next; temp->next =pnew; } } void shanchu(int logo) { pold=head; while(pold->next->next!=NULL) { if(pold->score ==logo) { temp=pold; pold=pold->next ; head=pold; delete temp; } else if(pold->next->score ==logo) { pold->next =pold->next->next ; temp=pold->next ; pold=pold->next ; delete temp; } else pold=pold->next ; } if(pold->next->score ==logo) { temp=pold->next ; pold->next =NULL; delete temp; } } int main() { int num; int logo=2; int qian[20],hou[20]; int i=0; cin>>num; for(int i=0;i<num;i++) { cin>>qian[i]>>hou[i]; } for(int n=0;n<num;n++) charu(qian[n],hou[n]); pold=head; while(pold!=NULL) { cout<<pold->score ; pold=pold->next ; } shanchu(logo); pold=head; while(pold!=NULL) { cout<<pold->score ; pold=pold->next ; } system("pause"); return 0; }
输入一个单向链表和一个节点的值,从单向链表中删除等于该值的节点,删除后如果链表中无节点则返回空指针。链表结点定义如下:
struct ListNode
{
int m_nKey;
ListNode* m_pNext;
};
详细描述:
本题为考察链表的插入和删除知识。
链表的值不能重复
构造过程,例如
1 -> 2
3 -> 2
5 -> 1
4 -> 5
7 -> 2
最后的链表的顺序为 2 7 3 1 5 4
删除 结点 2
则结果为 7 3 1 5 4
链表的构造与删除
最新推荐文章于 2024-04-14 01:08:17 发布