非递减顺序表删除重复数据元素

news/2024/5/20 6:27:20 标签: 算法, c语言, 数据结构, 顺序表

算法思想:重前往后遍历顺序表,如果当前元素与新链的链尾元素不相同,则将其插入新链尾部,同时更新新链长度。因为新链元素个数总是小于等于旧链,故可以不另外开辟空间使用旧链创建新链。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef int ElemType;
typedef struct {
	ElemType* data;
	int length;
}SeqList;
//非递减顺序表删除重复数据元素
/*算法思想:重前往后遍历顺序表,如果当前元素与新链的链尾元素不相同,则将其插入新链尾部,同时更新新链长度。
因为新链元素个数总是小于等于旧链,故可以不另外开辟空间使用旧链创建新链*/
void delectSameNum(SeqList& L) {
	int len = 0;
	for (int i = 1; i <L.length; i++) {
		if (L.data[i] != L.data[len]) {//当前元素与新链的链尾元素不相同
			L.data[++len] = L.data[i];//则将其插入新链尾部
		}
	}
	L.length=len+1;//最后更新新链长度
}

int main() {
	SeqList L;
	int len;
	scanf("%d", &len);
	L.length = len;
	L.data = (ElemType*)malloc(sizeof(ElemType) * len);//为数据动态分配存储空间
	for (int i = 0; i < L.length; i++) {
		scanf("%d", &L.data[i]);
	}
	delectSameNum(L);
	for (int i = 0; i < L.length; i++) {
		printf("%d ", L.data[i]);
	}
}


http://www.niftyadmin.cn/n/312879.html

相关文章

网络层最重要的协议—IP协议

网络层最重要的协议—IP协议 IP协议格式解决IP地址不够用问题的三种方法方法一: 动态分配IP地址方法二: NAT网络地址转换方法三: IPv6(根本上解决IP不够用的问题)小结&#xff1a; IP协议之地址管理主机号/网络号子网掩码特殊IP IP协议格式 4位版本&#xff1a;此处取4或64位首…

Java中的AWT和Swing有什么区别

在Java编程中&#xff0c;AWT&#xff08;Abstract Window Toolkit&#xff09;和Swing是两个经常使用的GUI工具包。尽管这两个工具包都提供了创建用户界面的功能&#xff0c;但它们之间有一些重要的区别。 AWT AWT&#xff08;Abstract Window Toolkit&#xff09;是Java最早…

Java中的JUnit是什么?如何使用JUnit进行单元测试

JUnit是Java中最流行的单元测试框架之一。它可以帮助开发人员在代码编写过程中检测出错误和异常&#xff0c;从而提高代码的质量和可靠性。 什么是JUnit&#xff1f; JUnit是一个由Kent Beck和Erich Gamma创建的开源Java单元测试框架&#xff0c;它已经成为Java开发中最常用的…

[230516] TPO71 | 2022年托福阅读真题第4/36篇 | Electrical Energy from the Ocean | 11:50

目录 7101 Electrical Energy from the Ocean Paragraph 1 问题1 Paragraph 2 问题2 Paragraph 3 问题3 Paragraph 4 问题4 做错 Paragraph 5 问题5 做错 Paragraph 6 问题6 Paragraph 7 问题7 Paragaph 8 问题8 做错 Paragraph 2 问题9 问题10 7101…

linux中wait与waitpid函数使用场景及扩展

一般运用这两个函数&#xff0c;是在父进程等待子进程退出的过程中 区别:wait使调用者阻塞&#xff0c;waitpid有一个选项&#xff0c;可以使调用者不阻塞 status参数是一个整型数指针 非空&#xff1a;子进程退出状态放在它所指向的地址中。 空&#xff1a;不关心退出状态 …

centos linux 配置私有网段并联网

文章目录 1. 创建虚拟机2. 虚拟机 A 配置网络3. 虚拟机 B 分配静态地址4. 测试 1. 创建虚拟机 vcenter 创建两台虚拟机A 、B&#xff0c;如何创建虚拟机请参考这里 虚拟机 A 具备两个网络接口&#xff0c;外网接口为 ens192 ip&#xff1a;192.168.22.6/20&#xff0c;网关为…

Map在循环中修改自己的key与value

Map在循环中修改自己的key与value 1.解决方案2.深入了解 1.解决方案 使用ConcurrentHashMap package com.company.newtest;import java.util.*; import java.util.concurrent.ConcurrentHashMap;public class test30 {public static void main(String[] args) {Map<String…

Games104现代游戏引擎学习笔记04

渲染管线 显卡&#xff1a; SIMD指令&#xff1a;指令级并行运算。一个指令&#xff0c;4次运算。处理坐标运算&#xff0c;矩阵运算 SIMT&#xff1a;一个指令在多核上&#xff0c;同时做同样的指令操作。 现代显卡放了无数个小小的核。 因此&#xff0c;在做所有的绘制算法…