王道p18 6.从有序顺序表中删除所有其值重复的元素,使表中所有元素的值均不同(c语言代码实现)

视频讲解在这里:

顺序表p18 第6题wd数据结构课后代码题(c语言代码实现)_哔哩哔哩_bilibili

本题代码如下

void deleterepeat(struct sqlist* L)
{
	if (L->length == 0)
		printf("表空");
	int i = 0;
	int k = 0;
	for (i = 1, k = 1; i < L->length; i++)
	{
		if (L->a[i] != L->a[i - 1])//遇到后面一个与前一个不相等,就前移
		{
			L->a[k] = L->a[i];
			k++;
		}
	}
	L->length = k;
}

完整测试代码

#include
#define Max 7
struct sqlist
{
	int a[Max];
	int length;
};
void deleterepeat(struct sqlist* L)
{
	if (L->length == 0)
		printf("表空");
	int i = 0;
	int k = 0;
	for (i = 1, k = 1; i < L->length; i++)
	{
		if (L->a[i] != L->a[i - 1])//遇到后面一个与前一个不相等,就前移
		{
			L->a[k] = L->a[i];
			k++;
		}
	}
	L->length = k;
}
int main()
{
	struct sqlist L;
	L.length = 7;
	int j = 0;
	for (j = 0; j < L.length; j++)
		scanf("%d", &L.a[j]);
	printf("原始顺序表为:");
	for (j = 0; j < L.length; j++)
		printf("%d", L.a[j]);
	deleterepeat(&L);
	printf("\n删除重复元素后的顺序表为:");
	for (j = 0; j < L.length; j++)
		printf("%d", L.a[j]);
	return 0;
}

你可能感兴趣的:(顺序表,c语言,算法,数据结构)