#include <stdio.h>
#include <stdlib.h>
#define DATATYPE int
#define MAXSIZE 100
typedef struct
{
DATATYPE data[MAXSIZE];
int len;
}SEQUENLIST;
void INITATE(SEQUENLIST *L)//初始化线性表,参数L是表的名字
{
L->len=0;
}
void CREAT(SEQUENLIST *L,int n)//向线性表里添加初始元素 ,L是表名,n是想要创建的初始元素的个数
{
int i=0,c=0;
printf("请从小到大输入%d个数:",n);
for(i=0;i<n;i++)
{
scanf("%d",&c);
L->data[i]=c;
L->len++;
}
}
void INSERT(SEQUENLIST *L,int i,DATATYPE b) //插入操作,L是表名,i是即将插入的位置的下标,b是插入的元素内容
{
int k;
if(i<1||i>L->len+1||L->len>=MAXSIZE)
{
printf("error");
}
else
{
for(k=L->len;k>=i;k--)
{
L->data[k]=L->data[k-1];
}
L->data[i-1]=b;
L->len++;
}
}
void Delete_Same(SEQUENLIST *L){
//删除有序表重复值
int j,i;
int same=0;
for(i=0;i<L->len;i++)
{
same=0;
for(j=i+1;j<L->len;j++){
if (L->data[i] == L->data[j])
{
same++;
}
else{
L->data[j-same]=L->data[j];
}
}
L->len=L->len-same;
}
}
int main(int argc, char *argv[]) {
int a,b,n,i;
SEQUENLIST k;// 创建一个线性表K
SEQUENLIST *List=&k;//让一个指针List指向线性表K
INITATE(List);//初始化线性表
printf("请输入你要创建的元素个数");
scanf("%d",&n);
CREAT(List,n);//向线性表里添加初始值
printf("去重前的值:");
for(i=0;i<List->len;i++){//通过循环输出添加前的值
printf("%4d",List->data[i]);
}
Delete_Same(List);
printf("\n去重后的值:");
for(i=0;i<List->len;i++){//通过循环输出去重后的值
printf("%4d",List->data[i]);
}
return 0;
}
(数据结构)删除有序的顺序表中的重复元素
最新推荐文章于 2023-03-12 22:18:48 发布