您的位置:首页 > 理论基础 > 数据结构算法

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

2018-02-02 16:46 447 查看

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

Time Limit: 1000MS
Memory Limit: 4096KB
[align=center][/align]

Problem Description

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

Input

第一行输入数据个数n;

第二行依次输入n个整数;

第三行输入欲删除数据m。

Output

第一行输出原始单链表的长度;

第二行依次输出原始单链表的数据;

第三行输出完成删除后的单链表长度;

第四行依次输出完成删除后的单链表数据。

Example Input

10
56 25 12 33 66 54 7 12 33 12
12


Example Output

10
56 25 12 33 66 54 7 12 33 12
7
56 25 33 66 54 7 33
#include <stdio.h>
#include <stdlib.h>
int num;
struct node
{
int data;
struct node * next;
};
struct node * create(int n)
{
struct node * head,*p,*tail;
int i;
head=(struct node *)malloc(sizeof(struct node));
head->next=NULL;
tail=head;
for(i=0;i<=n-1;i++)
{
p=(struct node *)malloc(sizeof(struct node));
scanf("%d",&p->data);
p->next=NULL;
tail->next=p;
tail=p;
}
return head;
}
void output(struct node *head)
{
struct node *p;
p=head->next;
while(p->next!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
printf("%d\n",p->data);
}
void dele(struct node * head,int x)
{
struct node *p,*q;
p=head->next;
q=head;
while(p!=NULL)
{
if(p->data==x)
{
q->next=p->next;
p=q;
num++;
}
q=p;
p=p->next;
}
}
int main()
{
int n,m;
struct node  *head;
scanf("%d",&n);
head=create(n);
scanf("%d",&m);
printf("%d\n",n);
output(head);
dele(head,m);
printf("%d\n",n-num);
output(head);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sdut joj