一个顺序表元素值有序递增,编写算法,删除顺序表中值相同的多余元素。
2-4delete_sortSqlist-2.c
#include"seqlist_def.h"
#include"stdio.h"
void delete_sort_same(SEQUENLIST *a)
{
int i=0,j;
while(i<a->last)
{
while((a->datas[i]==a->datas[i+1])&&(i<a->last))
{
for(j=i;j<a->last;j++)
a->datas[j]=a->datas[j+1];
a->last--;
}
i++;
}
}
main()
{
extern int create_sortedlist(SEQUENLIST *a,int n);
extern void print_seqlist(SEQUENLIST *a);
SEQUENLIST a;
printf("有序表有%d个元素\n",7);
if(create_sortedlist(&a,7)!=0)
print_seqlist(&a);
else
return 0;
printf("\n删除重复元素后,有序表为:\n");
delete_sort_same(&a);
print_seqlist(&a);
return 0;
}
seqlist_def.h
//顺序表类型定义seqlist_def.h
#ifndef __SEQ_LIST_H
#define __SEQ_LIST_H
#define DATATYPE1 int
#define MAXSIZE 100
typedef struct
{
DATATYPE1 datas[MAXSIZE];
int last;
}SEQUENLIST;
#endif
create_sortedlist.c
//构造有序表create_sortedlist.c
#include"seqlist_def.h"
#include"stdio.h"
void insert_x_seqlist(SEQUENLIST *a , int x)
{//在有序表中插入一个x,插入完仍有序
int i;
i=a->last;
while(x<a->datas[i])
{
a->datas[i+1]=a->datas[i];
i--;
}
a->datas[i+1]=x;
a->last++;
}
int create_sortedlist(SEQUENLIST *a,int n)
{
int x,i=1;
if(n>=1)
{
printf("请输入第%d个整数:",i);
scanf("%d",&x);
a->datas[1]=x;
a->last=1;
i=2;
while(i<=n)
{
printf("请输入第%d个整数:",i);
scanf("%d",&x);
insert_x_seqlist(a,x);
i++;
}
return 1;
}
else
return 0;
}
print_seqlist.c
//打印顺序表
#include"seqlist_def.h"
#include"stdio.h"
void print_seqlist(SEQUENLIST *a)
{//依次打印顺序表a中的所有元素
int i;
printf("表中各元素为:");
for(i=1;i<=a->last ;i++)
{
printf("%5d",a->datas[i]);
}
printf("\n");
}
关注下面这个关注号,了解更多信息。
头顶渐突终不悔,代码道出我的爱。