第一次正式算法课

在这里插入图片描述

1. 数据结构 (基础支撑) 
	数据(Data){ 
		1.存储在某种介质上,
		2.可识别,
		3.物理符号
			要素{
				1.类型(type):例 int 
				2.值(value) 例 32767 
			} 
	} 
	
	// 用来识别信息的基本组成单位 
	数据元素(DATA Element){
		1. 若干数据的集合
		2. 用来表示现实世界的一个完整的信息 
	} 

	// 对数据的处理方法 
	数据结构{
		1. 逻辑结构:数据结构中数据元素之间存在的逻辑联系
			A.  集合式:数据元素之间是散列的(无联系) 
			B.  线性  :数据元素之间存在线性关系(栈,队列) 
			C.  非线性联系{
					a. 树状关系
					b. 图状关系					
				} 
		2. 物理(存储)结构(存储结构) : 数据元素的物理存储
			A. 顺序存储(用连续的存储单元来存储(数组)) 
			B. 链式存储(用不连续的存储单元(链表))
			
			衡量标准{
				1. 逻辑结构(时间复杂度)
				2. 物理结构(空间复杂度) 
			} 
			
			
1. 数组不是数据结构,存入了啥就叫啥逻辑结构			
2. 时间复杂度不是运行时间 
3. 贪心,DP,回溯,最短路径,分治,递归,深搜广搜,,,,
	} 
	
2. 算法 (方案) 







线性表: 用来表示数据集合中数据元素之间的逻辑关系
	表示{
		1. 数据集合
		2. 数据元素之间的逻辑次序 
	}
	
例:DataList{
		春-夏-冬-秋 (数据集合的数据元素是没有次序的)
		
		逻辑次序: 图例法 春->夏->秋->冬 
	} 
	二元组来表示: DataRelationship = {<春,夏> <夏,秋> <秋,冬>} 
				  序偶表示 

	线性表的特点
	1    		2    		3    		4	
(首元素) 			 				 (尾元素)
   
   1. 前驱
   2. 后继
   
   首元素:线性表中没有前驱的元素叫做首元素
   尾元素:线性表中没有后继的元素叫做尾元素
   非终端元素: 线性表中有唯一的前驱和唯一的后继的元素叫非终端元素
   
   
   
   
1. 顺序表 : 把一个线性表,用连续的存储结构存储
	顺序表是线性表
	用数组存储 
2. 实现顺序表{
	  1. 要有一个数据集合
	  2. 要有一个数组(连续)		
   } 

声明一个连续的存储单元
 1. 定义一个数组 数据类型+数组名[元素个数]
*2. 声明一个动态数组  
	malloc(字节数)--在内存中分配多少个字节 
	问题
		1. 是否分配成功
		2. 分配成功在哪里
		3. 放什么类型的值
	返回值{
		成功 返回首字节地址 
		失败 返回null 
	}	
	
	若单元分配成功返回首字节的地址
	但是改地址无类型(void) 
	通过强制类型转换
	
	例:在内存中分配 4 个内存单元 
		int *p;
		p = (int*)malloc(4); 
#include <stdio.h>
#include <stdlib.h>
int main(void){
	int *p;
//	p = (int*) malloc(4);
	p = (int *) malloc (5 * sizeof(int));
	if(!p){
		printf("分配失败");
	}else{
		printf("分配成功"); 
	}
	
	for (int i = 0; i < 5; i++){
		p[i] = i;
	}	
	for (int i = 0; i< 5; i++){
		printf("%d ", p[i]);
	}
	printf("\n");
	printf("%d %d", *p, sizeof(int));
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值