20,数据结构(3)

/*
  达内学习 数据结构 day20 2013-9-25
 */

函数返回数据的方式,
1 用return
2 用指针类型参数 返回

链表的元素插入
1 新建一个结点,指定数据、前结点、和后结点
2 判断新建的结点是否是首结点(prev==NULL),如果NULL就是首结点,设置list->head = 新结点 ;如果不是 改变prev->next = 新结点
3 把新结点的后节点->prev = 新结点(追加没有后结点)
 
练习:
 单向链表
 节点:两个成员:数据和next
 链表:两个成员:head和tail:
 1 实现list_init()、list_deinit(),list_append(),list_size(),list_printf(),和list_rprintf()函数,分别用于单向链表的追加测长,正向反向打印
 2 实现list_reverse()函数 用于将单向链表逆转
 3 实现list_middle()函数 用于获取单向链表的中间值,其平均时间复杂度不能超过O(N)(循环次数不能超过长度)
 提示:反向打印,逆转单向链表可以使用堆栈或者递归
  两个节点指针,一个递增1,另一个递增2,当递归2的指针到结束,递增1的指针的中间

递归的使用原则
  1 有退出条件,否则 死循环
  2 使用递归后,应该 是简化问题,而不是复杂化
  递归的核心思想:
    假定有一个函数已经你解决了问题(递归函数),在解决问题时就可以调用递归函数 ,比如反向打印问题
 假定rprint函数已经解决了反响打印 ,打印当前就变成:
 fprint(n-1),printf(n);

二叉树
二叉树是树状结构的最间模型,每个节点对多有两个子节点,每个子节点仅有一个父及诶单,整课树只有一个根节点
树具有递归的结构特征,用递归的方法处理,可以简化算法
三种遍历
前序 DLR
中序 LDR
后序 LRD
满二叉树 就是所有层节点都满了
完全二叉树 就是除了最后一层多有层都满了,而且最后一层左边满了

二叉树实现:
顺序标-必须是完全二叉树,莫不是完全二叉树必须用虚结点补成完全二叉树才能存储,有可能造成很大的内存浪费
链式表-更好的实现方式

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值