单链表操作(单链表)

来源:互联网 发布:p2p网络借贷监管政策 编辑:程序博客网 时间:2024/06/05 04:36

1.题目:

 

Problem Description

输入n个整数,先按照数据输入的顺序建立一个带头结点的单链表,再输入一个数据m,将单链表中的值为m的结点全部删除。分别输出建立的初始单链表和完成删除后的单链表。

 

Input

有多组输入数据,
第一行输入数据个数n(若n=0表示输入结束);
第二行依次输入n个整数;
第三行输入欲删除数据m;

 

Output

第一行依次输出原始单链表的数据;
第二行依次输出完成删除后的单链表数据;

 

Sample Input

1056 25 12 33 66 54 7 12 33 12120

 

Sample Output

56 25 12 33 66 54 7 12 33 1256 25 33 66 54 7 33

 

 

2.参考代码:

 

#include <iostream>using namespace std;struct Node{int data;Node* next;};class LinkList{private:Node* head;public:LinkList(int* a,int n);~LinkList();void Delete(int x);void show();};LinkList::LinkList(int* a,int n){Node* r,* s;head=new Node;r=head;for(int i=0;i<n;i++){s=new Node;s->data=a[i];s->next=r->next;r->next=s;r=s;}r->next=NULL;}LinkList::~LinkList(){Node* p,* q;p=head;while(p){q=p;p=p->next;delete q;}}void LinkList::Delete(int x){   ///核心代码Node* p,* q;p=head;while(p->next){if(p->next->data==x){q=p->next;p->next=q->next;delete q;}elsep=p->next;}}void LinkList::show(){   ///注意格式,这里没有要求两个数之前有一个空格哈!Node* p;p=head->next;if(p){while(p){cout<<p->data<<" ";p=p->next;}cout<<endl;}}int main(){int n,i,x,a[111];while(cin>>n){if(n==0)break;for(i=0;i<n;i++)cin>>a[i];LinkList w(a,n);w.show();cin>>x;w.Delete(x);w.show();}return 0;}


 

 

 

 

原创粉丝点击