C语言指针应用:删除一个数组中的重复元素

文章提供了两种方法删除数组中的重复元素:1)使用指针法遍历整数数组,遇到重复元素则将其置0;2)采用下标法处理字符数组,将重复字符替换为。这两种方法并未实际删除元素,而是标记为无效。在主函数中,分别对整数数组和字符数组应用了这两种方法。
摘要由CSDN通过智能技术生成
  1. 使用指针法遍历整个链表,将重复的元素的值置0,然后只打印非0元素即可实现;(漏洞:并未真正删除重复元素,而是将那些重复的元素置0了)
  2. 使用下标法来设置两个指针:数字以字符数组的形式出现;

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void del_similiar1(int *a, int array_len) {//指针法删除数组中的重复元素
	int *pn = a;
	int *pstep = a+1;
	for (int i = 0; i < array_len; ++i) {
		if (*pn != *pstep) {	 
			pn++;	
			while (*pn == 0) {	//pn后移时忽略那些已经置为0的元素
				pn++;
			}
		}
		else {
			*pstep = 0;		//将重复的数组元素置0
		}
		pstep++;
	}
}
void del_similiar2(char *str,int str_len) {//下标法删除数组中的重复元素
	int i = 0, j = 0;
	for (i; i < str_len; ++i) {
		if (str[i] != str[j]) {
			j++;
			str[j] = str[i];
		}
	}
	j++;
	str[j] = '\0';
}
int main() {
	//int a[] = { 1,2,2,2,3,3,4,5,5,6 };
	//del_similiar1(a, 10);
	char str[] = "1222334556";
	del_similiar2(str,strlen(str));
	//for (int i = 0; i < 10; ++i) {
	//	if (a[i] != 0) {
	//		printf("%2d", a[i]);
	//	}
	//}
	//printf("\n");
	puts(str);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值