顺序表应用1:多余元素删除之移位算法
#include <bits/stdc++.h>
using namespace std;
const int manx=1e5+10;
class yyh
{
public:
int data[manx];
int len;
void create(class yyh*);
void change(class yyh*);
void print(class yyh*);
};
void create(struct yyh* head)
{
for(int i=1; i<=head->len; i++)
{
scanf("%d",&head->data[i]);
}
}
void change(struct yyh* head)
{
for(int i=1; i<=head->len; i++)
{
for(int j=i+1; j<=head->len; j++)
{
if(head->data[i]==head->data[j])
{
for(int k=j; k<=head->len; k++)
{
head->data[k]=head->data[k+1];
}
j--;
head->len--;
}
}
}
}
void print(struct yyh* head)
{
for(int i=1; i<=head->len; i++)
{
if(head->len==i)
printf("%d\n",head->data[i]);
else
printf("%d ",head->data[i]);
}
}
int main()
{
int n;
struct yyh* head=new struct yyh();
scanf("%d",&n);
while(n--)
{
scanf("%d",&head->len);
create(head);
change(head);
print(head);
}
return 0;
}
如下写法更适合提交到OJ上,因为毕竟不太关注面向对象的问题,其实没有必要用class;另外在不同题目中,处理class的属性是private 还是 public,又要动脑子,没必要;
#include <bits/stdc++.h>
using namespace std;
const int manx=1e5+10;
struct yyh
{
int data[manx];
int len;
};
void create(struct yyh* head)
{
for(int i=