顺序表应用1:多余元素删除之移位算法
来源:互联网 发布:在人间 知乎 编辑:程序博客网 时间:2024/06/06 12:44
#include<stdio.h>
#include<malloc.h>
#include<iostream>
using namespace std;
#define max 10000
typedef struct
{
int *elem;
int length;
int size;
}list;
int init(list &L,int n)
{
L.elem=(int *)malloc(n*sizeof(int));
if(!L.elem) return -1;
L.size=max;
return 0;
}
void create(list &L,int n)
{
int i;
L.length=n;
for(i=0;i<n;i++)
scanf("%d",&L.elem[i]);
}
void purge(list &L)
{
int i,j,k;
for(i=0;i<L.length-1;++i)
{
j=i+1;
while(j<L.length)
if(L.elem[j]!=L.elem[i])
++j;
else
{
for(k=j+1;k<L.length;++k)
L.elem[k-1]=L.elem[k];
--L.length;
}
}
}
int main()
{
list L;
int i,n,d,T;
scanf("%d",&T);
while(T)
{
scanf("%d",&n);
init(L,n);
create(L,n);
purge(L);
for(i=1;i<=L.length;i++)
{
printf("%d%c",L.elem[i-1],(i==L.length)?'\n':' ');
}
T--;
}
return 0;
}
/**************************************
Problem id : SDUT OJ B
User name : wy150428臧志栋
Result : Accepted
Take Memory : 544K
Take Time : 20MS
Submit Time : 2016-08-03 10:02:34
**************************************/
算法介绍:遍历顺序表,将第一个和最后一个位置的元素记录后,利用后一个标记值判断是否与第一个位置的元素相同,
若相同则与顺序表最后一个元素互换,指针后移,尾指阵前移,顺序表长度减一,依次进行上述操作
- 顺序表应用1:多余元素删除之移位算法
- 顺序表应用1:多余元素删除之移位算法
- 顺序表应用1:多余元素删除之移位算法
- 顺序表应用1:多余元素删除之移位算法
- 顺序表应用1:多余元素删除之移位算法
- 顺序表应用1:多余元素删除之移位算法
- 顺序表应用1:多余元素删除之移位算法
- 顺序表应用1:多余元素删除之移位算法
- 顺序表应用1:多余元素删除之移位算法
- 顺序表应用1:多余元素删除之移位算法
- 顺序表应用1:多余元素删除之移位算法
- 顺序表应用1:多余元素删除之移位算法
- 顺序表应用1:多余元素删除之移位算法
- 顺序表应用1:多余元素删除之移位算法
- 顺序表应用1:多余元素删除之移位算法
- 顺序表应用1:多余元素删除之移位算法
- 顺序表应用1:多余元素删除之移位算法
- 顺序表应用1:多余元素删除之移位算法
- ios 解决textfield无法自动弹出键盘问题
- android之View坐标系(view获取自身坐标的方法和点击事件中坐标的获取)
- request、response 中文乱码问题与解决方式
- js中top.location.href、parent.location.href用法
- HDOJ 2068 RPG的错排
- 顺序表应用1:多余元素删除之移位算法
- STL源码阅读(七)
- 轻松学习之最简化原生效果集成UITableViewCell左滑多个按钮
- Android开发之仿QQ侧滑删除实现方式(一)
- 图标按钮组件的所有测试用例
- 迁移学习(Transfer learning)
- d3事件(三):事件的捕获与冒泡
- hdu 1113
- 全球的开源镜像站点