1.删除重复数据(将先出现的数据与后面的数据对比,如果有重复的将后面的数据删除)提示:可以直接使用按位置删除的函数
顺序表中原有:12211 34324534541
顺序表中存储:12345
主函数
#include <stdio.h>
#include "./head.h"
int main(int argc, const char *argv[])
{
Seq* list = create_seq();
//插入数据
get_seq(list,1);
get_seq(list,2);
get_seq(list,2);
get_seq(list,1);
get_seq(list,1);
get_seq(list,3);
get_seq(list,4);
get_seq(list,3);
get_seq(list,2);
get_seq(list,4);
get_seq(list,5);
//删除数据
del_seq(list);
//遍历
show(list);
return 0;
}
功能函数
//创建顺序表
Seq* create_seq()
{
Seq *list=(Seq*)malloc(sizeof(Seq));
memset(list,0,sizeof(Seq));
return list;
}
//插入数据
void get_seq(Seq *list,int index)
{
if(list->pos==N)
{
printf("插入已满\n");
}
else
{
(list)->data[list->pos]=index;
(list)->pos++;
}
}
//判断顺序表是否为空
dataType is_insertK(Seq*list)
{
if(list->pos==0)
{
return list->pos==0?1:0;
}
}
//遍历
void show(Seq *list)
{
for(int i=0;i<list->pos;i++)
{
printf("%4d",(list)->data[i]);
printf("\n");
}
}
//按下标位置删除
void x_del(Seq *list,int index)
{
if(index > list->pos || index < 0)
{
printf("删除失败\n");
return ;
}
else
{
for(int i=index;i<list->pos-1;i++)
{
list->data[i]=list->data[i+1];
}
list->pos--;
printf("删除成功\n");
}
}
//删除数据
void del_seq(Seq *list)
{
int i;
for( i=0;i<list->pos;i++)
{
for(int j=i+1;j<list->pos;j++)
{
if(list->data[i]==list->data[j])
{
x_del(list,j);
}
}
}
for( i=0;i<list->pos;i++)
{
for(int j=i+1;j<list->pos;j++)
{
if(list->data[i]==list->data[j])
{
x_del(list,j);
}
}
}