数据结构实验之链表七:单链表中重复元素的删除
2017-12-13 21:47
267 查看
Problem Description
按照数据输入的相反顺序(逆位序)建立一个单链表,并将单链表中重复的元素删除(值相同的元素只保留最后输入的一个)。Input
第一行输入元素个数 n (1 <= n <= 15);第二行输入 n 个整数,保证在 int 范围内。
Output
第一行输出初始链表元素个数;第二行输出按照逆位序所建立的初始链表;
第三行输出删除重复元素后的单链表元素个数;
第四行输出删除重复元素后的单链表。
Example Input
10 21 30 14 55 32 63 11 30 55 30
Example Output
10 30 55 30 11 63 32 55 14 30 21 730 55 11 63 32 14 21
#include <stdio.h>
#include <stdlib.h>
int k = 0, h = 0;
struct node
{
int data;
struct node *next;
};
struct node *creat(int n)
{
struct node *head, *p;
head = (struct node *)malloc(sizeof(struct node));
head->next = NULL;
int i;
for(i = 1; i <= n; i++)
{
p = (struct node *)malloc(sizeof(struct node));
scanf("%d", &p->data);
p->next = head->next;
head->next = p;
}
return head;
};
void shan(struct node *head)
{
struct node *head1, *p, *tail, *q, *s;
int k = 0;
head1 = (struct node *)malloc(sizeof(struct node));
head1->next = NULL;
tail = head1;
p = head->next;
while(p)
{
s = p->next;
q = head1->next;
while(q && p->data != q->data)
q = q->next;
if(!q)
{
k++;
tail->next = p;
tail = p;
tail->next = NULL;
}
p = s;
}
printf("%d\n", k);
}
void display(struct node *head)
{
struct node *p;
p = head->next;
while(p != NULL)
{
if(p->next != NULL)
printf("%d ", p->data);
else
printf("%d\n", p->data);
p = p->next;
}
}
int main()
{
struct node *head;
int n;
scanf("%d", &n);
head = creat(n);
printf("%d\n", n);
display(head);
shan(head);
display(head);
return 0;
}
相关文章推荐
- 数据结构实验之链表七:单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除
- sdutacm-数据结构实验之链表七:单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除
- 2122数据结构实验之链表七:单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除
- (?)数据结构实验之链表七:单链表中重复元素的删除
- SDUT-2122 数据结构实验之链表七:单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除
- SDUT 2122 数据结构实验之链表七:单链表中重复元素的删除
- 山东理工OJ【2122】数据结构实验之链表七:单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除
- 数据结构实验之链表七:单链表中重复元素的删除