为什么要学习数据结构
学习c语言是让大家学会如何去写程序
学习数据结构是为了让大家更加简洁、高效的写程序
数据结构研究的是数据的逻辑结构,存储结构及其操作链表的特点:
头节点:数据域无效的节点
首节点:第一个数据域有效的结点
尾节点:指针域无效的的节点
空链表:既是头节点又是尾节点
定义数据元素的类型 typedef int data_type
定义链表中节点的数据类型 typedef struct linknode
栈的特点:
1.先进后出.
2.只允许在栈顶进行操作
队列的特点:
1.先进先出
2.只允许在队头删除,队尾插入
树的概念:
1.满足树的条件:
一,有且只有一个根节点,二,其余的节点可以分为m个互不相交的有限集合
度数:
一个节点的子树的个数称为该节点的度数,一颗树的度数是指该树中节点的最大度数。
深度(高度)
节点的层数等于父节点的层数加1,根节点的层数定义为1,把树中节点层数的最大值称为该树的深度或者高度。
结论:在任意二叉树中,树叶的数目比度数为2的数目多1
赫夫曼树:赫夫曼树不唯一,为了保证赫夫曼树的唯一性,遵循左小右大的原则
程序=数据结构+算法
算法的特性
1有穷性2确定性3可行性4输入5输出
如何评价算法的好坏
1、消耗时间的多少(时间复杂度,越少越好)
2、消耗存储空间的多少(空间复杂度)
3、容易理解、容易编程和调试、容易维护
计算O的方法
1、根据问题规模写出n的表达式
2、如果有常数项,将其置为1
3、只保留最高项,其他项舍去
4、如果最高项数不为1,将其置为1
二分查找:只能应用于有序序列