首页 > 代码库 > 数据结构之 线性表---单链表操作A (删除链表中的指定元素)

数据结构之 线性表---单链表操作A (删除链表中的指定元素)

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

Time Limit: 1000MS Memory limit: 4096K

题目描述

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

输入

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

输出

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

示例输入

1056 25 12 33 66 54 7 12 33 1212

示例输出

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

代码(比较挫~~~):
#include <iostream>#include <string>#include <cstdio>#include <string.h>#include <algorithm>#include <ctype.h>using namespace std;struct node{    int data;    struct node *next;};struct node *creat(int n){    int i;    struct node *head, *tail, *p;    head=new node;    head->next=NULL;    tail=head;    for(i=0; i<n; i++)    {        p=new node;        cin>>p->data;        p->next=NULL;        tail->next=p;        tail=p;    }    return head;}int main(){    int n, k;    int len;    int i, j;    cin>>n;    struct node *head, *w, *q;    head = creat(n);    cin>>k; //输入要被删除的数据//输出链表1    w=head->next;    len=n;    cout<<len<<endl;    for(j=0; j<len; j++)    {        if(j==0)          cout<<w->data;        else          cout<<" "<<w->data;        w=w->next;    }    cout<<endl;//进行删除操作    len=n;    w=head->next;    q=head; //q的后继是w    for(j=0; j<n; j++)    {        if(w->data =http://www.mamicode.com/= k)" "<<w->data;        w=w->next;    }    cout<<endl;    return 0;}

 

数据结构之 线性表---单链表操作A (删除链表中的指定元素)