首页 > 代码库 > 数据结构之 线性表---单链表的操作B(先逆序+再删除重复元素)
数据结构之 线性表---单链表的操作B(先逆序+再删除重复元素)
数据结构上机测试2-2:单链表操作B
Time Limit: 1000MS Memory limit: 65536K
题目描述
按照数据输入的相反顺序(逆位序)建立一个单链表,并将单链表中重复的元素删除(值相同的元素只保留最后输入的一个)。
输入
第一行输入元素个数n;
第二行输入n个整数。
第二行输入n个整数。
输出
第一行输出初始链表元素个数;
第二行输出按照逆位序所建立的初始链表;
第三行输出删除重复元素后的单链表元素个数;
第四行输出删除重复元素后的单链表。
第二行输出按照逆位序所建立的初始链表;
第三行输出删除重复元素后的单链表元素个数;
第四行输出删除重复元素后的单链表。
示例输入
1021 30 14 55 32 63 11 30 55 30
示例输出
1030 55 30 11 63 32 55 14 30 21730 55 11 63 32 14 21
代码(好搓~~~啊~~~,凑和着看吧):
#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 *nicreat(int n) //逆序创建链表{ int i; struct node *head, *p; head = new node; head->next = NULL; for(i=0; i<n; i++) { p=new node; cin>>p->data; p->next=head->next; head->next=p; } return head;}int main(){ int n; cin>>n; int i, j; int len; struct node *head, *w, *q; struct node *h1, *p, *tail, *dd; head=nicreat(n); cout<<n<<endl; w=head->next; for(i=0; i<n; i++) { if(i==0) cout<<w->data; else cout<<" "<<w->data; w=w->next; } cout<<endl;//删除重复元素,重复的保留最前面的 h1=new node; h1->next=NULL; tail=h1; len=0; w=head->next; delete(head); for(i=0; i<n; i++) { if(h1->next==NULL) //此时链表为空 { p=new node; p->data = http://www.mamicode.com/w->data;" "<<w->data; w=w->next; } cout<<endl; return 0;}
数据结构之 线性表---单链表的操作B(先逆序+再删除重复元素)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。