数据结构上机测试2-1:单链表操作A

来源:互联网 发布:java电商项目视频教程 编辑:程序博客网 时间:2024/05/01 07:47

Problem Description

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

Input

第一行输入数据个数n;
第二行依次输入n个整数;
第三行输入欲删除数据m。

Output

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

Example Input

1056 25 12 33 66 54 7 12 33 1212

Example Output

1056 25 12 33 66 54 7 12 33 12756 25 33 66 54 7 33

Author


#include <bits/stdc++.h>using namespace std;struct node{    int data;    struct node *next;};struct node *Creat(int n){    struct node *head,*tail,*p;    int i;    head=new struct node;    head->next=NULL;    tail=head;    for(i=0;i<n;i++)    {        p=new struct node;        cin>>p->data;        p->next=NULL;        tail->next=p;        tail=p;    }    return (head);};void DisList(struct node *head){    struct node *r;    int i,j,k;    r=head->next;    while(r)    {        if(r->next==NULL)            cout<<r->data<<endl;        else            cout<<r->data<<" ";        r=r->next;    }}void DelList(struct node *head,int n,int m){    struct node *t,*r,*p;    int k=0;    p=head;    r=p->next;    while(r)    {        if(m==r->data)        {            p->next=r->next;            r=p->next;            k++;        }        else        {            p=p->next;            r=r->next;        }    }    cout<<n-k<<endl;    DisList(head);}int main(){    struct node *head,*r;    int i,j,n,m,k;    cin>>n;    head=Creat(n);    cin>>m;    cout<<n<<endl;    DisList(head);    DelList(head,n,m);    return 0;}

0 0