Linux数据结构

数据结构和算法

  1. 培养我们的高级思维: 数据结构算法掌握–》有利于做上层应用开发

  2. 提高程序的运行效率,采用不同的存储方式,数据的增删改查操作的效率是不一样的

  3. 主要内容
    顺序表的基本操作
    链表基本操作
    (增加,删除,更改,查找数据)
    栈和队列
    树和二叉树
    常见的排序算法

  • 链表基本操作
    • 单链表
    • 单向循环链表
    • 双向链表
    • 双向循环链表
    • 内核链表

顺序表

  1. 本质:就是前面C语言学习过的数组,在数组的基础上做了二次封装,封装了结构体
    总结成公式:
     struct  你自己取名字
      {
            类型  buf[大小];
            int last;  //标记最后一个有效成员数据的下标
     };

单链表

  1. 用结构体来表示单链表
    总结成公式:
struct  单链表的名字
 {
	int data;  //数据域,用来保存数据
	struct  单链表的名字 *next;  
	//指针域,用来指向下一个数据在内存中的地址
 };
  1. 学习链表的套路
--
方法一p=p->next; //p指向p的下一个节点 赋值运算翻译成指向
方法二p->next p的下一个节点
方法三初学者,一定要画图分析链表中指针的指向,否则很容易出现段错误
方法四当你画完图,代码进入死胡同,要么调换一些步骤或者使用两个指针操作

单向循环链表

任何链表总结成模型
   struct  链表的名字
   {
   //数据域,就是你这个链表需要存储的真实数据,可以是多个不同类型的数据
   //指针域,用来存放下一个节点在内存的首地址
   };
1. 特点
          在普通单链表的基础上,收尾相接
2. 对比单链表的写法
          while(p->next!=myhead)
3.总结链表操作的技巧

1.画图写步骤,步骤是交换
2.最厉害的武器–》用两个指针操作
3. p p->next p->next->next
4.

 while(p!=NULL) 	
 while(p->next!=NULL)

普通的双向链表

双向链表的表示
  struct  doublelist
  {
            //真实数据的数据域
            struct  doublelist *next;  //指向后面一个节点的指针
            struct  doublelist *prev; //指向前面一个节点的指针
  };

双向循环链表

  1. 特点:
    最后一个节点的next指针–》指向头结点
    头节点prev指针–》指向尾部
  2. 注意的问题
    第一:循环条件
    while(p->next!=head)
    第二:插入,初始化
    首尾相接
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值