数据结构## 标题有序顺序表## 标题删除重复元素(学习笔记)
要求:
从有序的顺序表中删除所有值重复的int型数值,使得表中所有int型数值的值均不相同
代码思想:
使用一个变量将顺序表中第一个值记录,直到碰见下一个与变量值不同的值,将其位置改为变量记录值下一位,并将变量值记录改变量,直到结束。
该算法的时间复杂度应该勉强达到了o(n)数量级,此代码是为巩固顺序表基本操作而写,有不对或更优算法评论区敬请告知。
#include<iostream>
#include<cstdlib>
using namespace std;
#define MaxSize 10
typedef struct{
int *head;
int data[MaxSize];
int length;
int size;
}sqlist;
void InitList(sqlist &l)
{
l.head = (int *)malloc(MaxSize * sizeof(int));
if(!(l.head))
{
cout<<"初始化失败";
exit(0);
}
l.size = MaxSize;
l.length = 0;
}
bool delet(sqlist &l)
{
if(l.length==0)
return false;
int i,j=l.data[0],k=0;
for(i=1;i<l.length;i++)
{
if(l.data[i]==j)
k++;
else
{
l.data[i-k]=l.data[i];
j=l.data[i];
}
}
l.length-=k;
return true;
}
int main()
{
sqlist l;
InitList(l);
for(int i=0;i<MaxSize;i++)
{
cin>>l.data[i];
l.length ++;
}
delet(l);
for(int i=0;i<l.length ;i++)
cout<<l.data[i]<<" ";
return 0;
}