【菜鸟er】C语言数据结构_入门

/**链表
入门:
	首节点:第一个有效节点
	尾节点:最后一个有效节点
	头节点:
		第一个有效节点之前的那个节点
		不存放数据
		方便操作
	头指针,尾指针:指向头尾节点的指针变量
	
	*确定一个链表需要几个参数:
		一个参数:头指针
定义:
	struct node{
		int data;					//数据域
		//存放复杂数据
		struct node * pnext;		//指针域
	};
	
	typedef struct node{
		int data;					//数据域
		struct node * pnext;		//指针域
	}NODE, *PNODE;
	//NODE	<==>	struct node
	//PNODE <==> 	struct node * 
分类:
	单链表:数据域+指针域
	双链表:指针域+数据域+指针域
	
	循环链表
	非循环链表
	
操作:参见:../链表的操作及应用.cpp


算法:
	广义算法:与数据的存储无关
	狭义算法:与数据的存储有关
	泛型:
		效果:不同的存储方式,同样的操作结果
		
		
优缺点:
	连续存储:
		优点:
			存取速度快
		缺点:
			插入慢,空间有限;
	离散存储:
		优点:插入删除快,空间无限;
		缺点:存取慢
	
*/

/**栈
分类:
	静态栈:连续
	动态栈:不连续(内核是链表)
	
算法:
	出栈;
	压栈;
	
应用:动态栈的操作及应用.cpp


官方:
		队列:#include<queue>
			申请队列:queue<type>q;
			
			判队空:q.empty();
			获取队头元素:q.front();
			入队:q.push();
			出队:q.pop();

		栈:#include<stack>
			申请栈:stack<type>s;
			入栈:s.push();
			c出栈:s.pop();
			f获取栈顶元素:s.top();
			判栈空:s.empty();
*/


/**队列
分类:
	链式队列:
	静态队列:
	
	循环队列:
		1.静态队列为什么是循环队列
			利于重复使用内存
		2.循环队列需要几个参数来确定
			front rear
		3.各参数含义
			队列初始化 front == rear == 0
			队列非空 	front == 第一个有效元素
						rear == 最后一个有效元素的下一个元素
			队列空
					front==rear 不一定等于0
		4.入队出队算法
				入队:
					数值存入rear代表的位置
					r = (r+1)%数组的长度
				出队:
					f = (f+1)%数组的长度
		5.判断空
				front==rear 一定为空
		6.判断满
			1.增加一个标识符参数
			2.尾部留空
				如果rear 紧挨着front 则满
				(r+1)%数组长度 == front
	*/
/**	其他
1.堆内存全局共享
*/
//未完待续


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值