删除顺序表中重复元素
程序员文章站
2024-03-20 13:42:40
...
//删除顺序表中所有指定元素
#include<stdio.h>
#include<stdlib.h>
#define max 1000
typedef struct slist
{
int num[max];
int length;
}list;
list* creatlist();//顺序表的创建
void printlist(list *l);//顺序表的输出
void delete_all(list *l,int x);//删除重复元素
int main(void)
{
list *l;
l = creatlist();
printf("打印顺序表:\n");
printlist(l);
printf("请输入需要删除的元素:\n");
int x;
scanf("%d",&x);
delete_all(l,x);
printf("重新打印表:\n");
printlist(l);
}
list* creatlist()
{
list *l = (list *)malloc(sizeof(list));
int len;
printf("请输入顺序表的长度 :\n");
scanf("%d",&len);
l->length = len;
int i;
printf("为顺序表添加元素:\n");
for(i = 0; i < l->length ; i++)
{
int number;
scanf("%d",&number);
l->num [i] = number;
}
return l;
}
void printlist(list *l)
{
if(l->length == 0)
{
printf("顺序表的长度为零:\n");
}
else
{
int i;
for(i = 0; i < l->length ; i++)
{
printf("%d ",l->num [i]);
}
}
printf("\n");
}
void delete_all(list *l,int x)
{
int i;
int k = 0;
for(i = 0; i < l->length ; i++)
{
if(l->num [i] != x)
{
l->num [k] = l->num [i];//与原来的顺序表共用一个空间,
//当然,我们完全可以定义一个新表来存放数据
k++;
}
}
l->length = k;//重新定义长度
}
上一篇: MD5实现加密解密
下一篇: 顺序表之有序顺序表重复元素删除