数据结构上机测试2-2:单链表操作B
2016-05-15 21:55
447 查看
数据结构上机测试2-2:单链表操作B
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
按照数据输入的相反顺序(逆位序)建立一个单链表,并将单链表中重复的元素删除(值相同的元素只保留最后输入的一个)。输入
第一行输入元素个数n;第二行输入n个整数。
输出
第一行输出初始链表元素个数;第二行输出按照逆位序所建立的初始链表;
第三行输出删除重复元素后的单链表元素个数;
第四行输出删除重复元素后的单链表。
示例输入
10 21 30 14 55 32 63 11 30 55 30
示例输出
10 30 55 30 11 63 32 55 14 30 21 7 30 55 11 63 32 14 21#include<stdio.h> #include<malloc.h> struct node { int number; struct node* next; }; struct node* Create(int num) { struct node* head,*p; head=(struct node*)malloc(sizeof(struct node)); head->next=NULL; for(int i=0;i<num;i++) { p=(struct node*)malloc(sizeof(struct node)); scanf("%d",&p->number); p->next=head->next; head->next=p; } return head; }; int Delete(struct node* head,int num) { struct node *p,*q,*k; int num1=num; p=head; while(p) { q=p; k=q->next; while(k) { if(k->number==p->number) { q->next=k->next; free(k); k=q->next; num1--; } else { q=k; k=q->next; } } p=p->next; } return num1; } void shuchu(struct node*head) { struct node *p; p=head->next; while(p) { if(p==head->next) printf("%d",p->number); else printf(" %d",p->number); p=p->next; } printf("\n"); } int main() { int n,n1; int key; struct node *head; scanf("%d",&n); head=Create(n); printf("%d\n",n); shuchu(head); n1=Delete(head,n); printf("%d\n",n1); shuchu(head); }
相关文章推荐
- 共同学习Java源代码--数据结构--ArrayList类(二)
- 跟着郝斌学数据结构(07)——队列(操作及应用)
- 跟着郝斌学数据结构(06)——队列(数组队列基本的一些问题)
- [notes] 可持久化数据结构学习笔记
- 数据结构上机测试2-1:单链表操作A
- 数据结构,二叉树已知后续中序,建树,层次遍历;
- 数据结构-平衡二叉树(AVL Tree)
- 跟着郝斌学数据结构(06)——队列(链式队列)
- 《数据结构》使用数组实现数制的转换
- 《数据结构》10进制的数向任何进制的数进行转换
- 数据结构-堆(heap)
- 《数据结构》算法3.8栈实现数制转换
- 跟着郝斌学数据结构(05)——栈
- 树的遍历
- 基础算法之选择排序
- java中数据结构
- 跟着郝斌学数据结构(04)——链表【链表的操作】
- 跟着郝斌学数据结构(03)——链表【基本概念】
- 软考之路(三)——数据结构之查找表与哈希表
- 跟着郝斌学数据结构(02)——连续存储数组的算法