有序顺序表删除重复元素
程序员文章站
2024-03-20 13:47:52
...
有序顺序表
最近的脑子像是被狗吃了一样,初试之前明明都能够写出来的算法,现在又狗屁都不是了,想破脑袋也想不出来,哎!每天事情也很多,分给算法的时间也并不是很多,也不知道现在写了算法,到时候又会不会忘记,学校的复试分数线也还没有出,天哪,赶紧来个痛苦话吧,无论如何我都是想要我的一志愿上岸!加油吧!都是些跨考生,我一个科班生还干不过他们吗?加油干过他们!
#include<stdio.h>
#include<stdlib.h>
#define MaxSize 50
typedef int Elemtype;
typedef struct{
Elemtype data[MaxSize];
int length;
}SqList;
SqList Creat(SqList &L)
{
Elemtype n,x;
printf("请输入想要创建的元素的个数");
scanf("%d",&n);
printf("现在开始输入元素");
for(int i=0;i<n;i++)
{
scanf("%d",&x);
L.data[i]=x;
}
L.length=n;
return L;
}
void print(SqList L)
{
for(int i=0;i<L.length;i++)
{
printf("%3d",L.data[i]);
}
printf("\n");
}
bool Delte_2(SqList &L)
{
if(L.length==0)
{
return false;
}
int i=0;
for(int j=i+1;j<L.length;j++)
{
if(L.data[j]!=L.data[i])
{
L.data[++i]=L.data[j];
}
}
L.length=i+1;
return true;
}
int main()
{
SqList L,S;
Creat(L);
print(L);
Delte_2(L);
print(L);
return 0;
}
这里是删除原本有序的表中重复的元素,不能开学王道书也拿不回来,其实看看上面的算法也是挺好的,基础好了别的才能好毕竟,哎,这道题也是当初王道上面的,有两个思路,因为链表是有序的,所以只要碰见第一个与之前元素不相等的,后面元素也不会相等了,所以此时直接将第一个不相等的元素加入新的链表中,以此类推,第二个思路我忘记了,王道书上有来着,现在想不起来,刚才写了然后花了半年时间之后才发现写的根本就不对!!!气我我了!