数据结构——概述

数据结构——概述

一、数据结构概述
1.定义:是相互之间存在一种或者多种特定关系的数据元素的集合。
2.分类
(1)集合:数据在结构上只是同属同一个集合的关系,没有其他结构关系。
(2)线性结构:元素之间存在一对一的关系。例如数组、链表等、
(3)树形结构:元素之间存在一对多的关系。
(4)图状结构或网状结构:元素之间存在多对多的关系。
以上是根据数据元素之间的逻辑关系进行分类,因此可以说是数据之间的逻辑结构。如果按照元素在计算机中的表示成为数据的物理结构,可以分为顺序存储结构链式存储结构。其中,顺序存储结构的元素其在计算机的内存上是连续存储的,反之,则为链式存储结构。

二、算法概述
1.特性
(1)有穷性——在有限的时间内完成。
(2)确定性——不会产生歧义,每次运行相同的输入必须得到相同的结果。
(3)可行性——可以通过基本运算有限次数实现。
(4)输入——一个算法可以零个或多个输入。
(5)输出——一个算法有一个或多个输出。
2.算法效率
时间复杂度和空间复杂度
时间复杂度:常量阶<对数阶<线性阶<平方阶<指数阶

示例:将A数组和B数组的元素合并为一个C数组(A、B数组中共有的数字不重复合并)。
时间复杂度为O(n*n)。

#include<stdio.h>
#include<string.h>
int A[5] = {1,3,4,6,8};
int B[6] = {3,5,2,6,7,3};

/****将A和B的元素合并到数组C中****/
void main()
{
	int Length_A = sizeof(A) / sizeof(A[0]);
	int Length_B = sizeof(B)/ sizeof(B[0]);
	int i,j,n,m = 0;
	int C[20];

	memcpy(C,A,5*sizeof(int));

	for(j=0;j<Length_B;j++)
	{
		n = 0;
		for(i = 0; i < Length_A; i++)
		{
			if(B[j] == A[i])
			{
				n++; //标记A和B中均有的元素个数
			}
		}
		if(0 == n)
		{
			m++; //标记新增元素的个数
			*(C + Length_A-1+m)=B[j];			
		}
	}
	for(i = 0; i < Length_A + m; i++)
	{
		printf("%d,",*(C+i)); //{1,3,4,6,8,5,2,7,}
	}
	getchar();
}

该文章只是用来监督自己学习,有不对的地方欢迎指正批评

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值