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

来源:互联网 发布:平板淘宝怎么换皮肤 编辑:程序博客网 时间:2024/06/16 18:40
Problem Description按照数据输入的相反顺序(逆位序)建立一个单链表,并将单链表中重复的元素删除(值相同的元素只保留最后输入的一个)。 Input第一行输入元素个数n;第二行输入n个整数。 Output第一行输出初始链表元素个数;第二行输出按照逆位序所建立的初始链表;第三行输出删除重复元素后的单链表元素个数;第四行输出删除重复元素后的单链表。 Example Input1021 30 14 55 32 63 11 30 55 30Example Output1030 55 30 11 63 32 55 14 30 21730 55 11 63 32 14 21Hint


#include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>using namespace std;int n;struct node{int data;struct node *next;};node *creat(int n){node *head,*p;head=(node *)malloc(sizeof(node));head->next=NULL;for(int i=0;i<n;i++){p=(node *)malloc(sizeof(node));scanf("%d",&p->data);p->next=head->next;head->next=p;}return head;}node *del(node *head){node *p=head->next;while(p!=NULL){node *q=p;node *k=q->next;while(k!=NULL){if(k->data==p->data){q->next=k->next;n--;}elseq=q->next;k=q->next;}p=p->next;}return head;}void print(node *head){node *p=head->next;while(p!=NULL){if(p->next==NULL)cout<<p->data<<endl;elsecout<<p->data<<" ";p=p->next;} }int main(){cin>>n;node *head=NULL;head=creat(n);cout<<n<<endl;print(head);head=del(head);cout<<n<<endl;print(head);return 0;}


原创粉丝点击