链表基础:

知识点:
1.链表基础
2.节点的创建和添加 llist_append_node
3.链表的遍历 llist_print_each
4.链表的查找与修改
5.链表的插入与删除
6.链表的销毁
7.链表逆序 ==========================
回顾数组
1.数组的常用操作
1)插入
2)修改
3)遍历
4)删除
5)逆序
2.数组操作的问题
1)插入和删除的效率低
1 2 3 5 6 0 0
1 2 3 4 9 5 6
1 2 3 4 9 5 6 0
2)当数组空间不足时需要重新申请内存空间
3)但是遍历速度快
==========================
链表基础
1.什么是链表
链表(Linked list)是一种常见的基础数据结构,是一种线性表
2.链表的作用
一种数据结构,保存数据
3.如何创建链表
==========================
链表节点的创建和添加
1.如何创建和添加一个节点
2.如何插入一个节点
4.处理链表的框架
void llist_append_node
(struct node *head,
struct node *new)
void llist_change_node(struct node *head,
int id,
char *name)
append *
insert *
search *
change
delete
destory
print_all *
print_node 5.添加节点模块append
练习:添加一个节点到头结点后面
==========================
链表的遍历
1. llist_print_each函数
void llist_print_each(struct node *head);
练习:
1.遍历输出链表内容
2.向链表添中加多个节点
==========================
链表的查找与修改
1. llist_search_node函数
struct node *llist_search_node(struct node *head, int id)
void llist_print_node(struct node *nd)
1)遍历链表
2)比较要搜索的内容是否和节点数据内容匹配
3)返回节点地址
练习:
1.查找指定id的学生信息,并输出该信息
2.change函数
1)搜索要修改的节点空间
2)修改节点内的数据
1.修改指定id的学生性别
==========================
链表的插入和删除
1. llist_insert_node函数
void llist_insert_node(struct node *head,
struct node *nd, int id)
1)创建一个新节点
2)插入到指定位值
练习:
链表包含10个节点
id=3,id=4 <== tmp
id=1
1.创建一个新节点并且插入到第一个节点的前面
2.创建一个节点并且插入到第三和第四个节点之间
2.delete函数
void llist_delete_node(struct node *head, int id);
1)修改该节点上一个节点的指向
2)释放当前节点
练习:
1.删除id为1节点
2.删除id为10节点
3.删除id为5节点
==========================
链表销毁
1.destory函数
int llist_destory(struct node *head);
1)销毁和清空是两种不同的操作
例如:倒空杯子的水和砸碎杯子两个操作
练习:
销毁上面创建的链表
==========================
链表逆序
H->A->B->C->D->E
^ ^ ^
p pp t
1.inverse函数
void llist_inverse(struct node *head);
练习:
1.按照上述顺序实现一个链表的逆序,并输出逆序的结果
==========================
多文件封装
1.头文件
2.实现文件
==========================
创建一个班级链表,该链表包含10个学生信息
1.每个学生包含信息有
姓名,年龄,身高,性别,语数英三门成绩
2.实现:
1)添加学生信息
2)输出所有的学生信息
3)搜索指定学生的信息,并且输出
4)将指定学生插入到指定学生的前面
5)删除指定学生信息
6)销毁班级链表
========================
enume menu{
EXIT, ADD, SONE, SALL,
INSERT, DEL, DELALL};
1.添加学生
2.查询指定学生信息
3.查询所有学生信息
4.学生插队
5.删除指定学生信息
6.删除班级
0.退出系统

  

2014.3.6-C语言学习小结的更多相关文章

  1. 2014.3.11-C语言学习小结

    文件操作: 知识点: 持久化 1.文本文件的读写 2.二进制文件的读写 3.缓冲文件系统 1.打开文件 2.读写文件 3.保存 4.关闭文件 ============================= ...

  2. 2014.3.5-C语言学习小结

    知识点: 1.结构体 struct 2.联合体 union 3.枚举 4.结构.联合与函数 =========================== 结构体 思考:如果现在希望保存一个学生的信息,该如何 ...

  3. 2014.3.4-C语言学习小结

    位操作: 知识点: 1.位运算符 2.位移运算符 1.将指定位设置为12.将指定位设置为03.获取指定位的内容 ==========================复习二进制 1.二进制转换 10-- ...

  4. react学习小结(生命周期- 实例化时期 - 存在期- 销毁时期)

    react学习小结   本文是我学习react的阶段性小结,如果看官你是react资深玩家,那么还请就此打住移步他处,如果你想给一些建议和指导,那么还请轻拍~ 目前团队内对react的使用非常普遍,之 ...

  5. objective-c基础教程——学习小结

    objective-c基础教程——学习小结   提纲: 简介 与C语言相比要注意的地方 objective-c高级特性 开发工具介绍(cocoa 工具包的功能,框架,源文件组织:XCode使用介绍) ...

  6. Go语言学习资源

    Go语言学习资源 下载:http://www.golangtc.com/downloadhttp://www.golangtc.com/download/liteide 安装及开发工具http://j ...

  7. 点滴的积累---J2SE学习小结

    点滴的积累---J2SE学习小结 什么是J2SE J2SE就是Java2的标准版,主要用于桌面应用软件的编程:包括那些构成Java语言核心的类.比方:数据库连接.接口定义.输入/输出.网络编程. 学习 ...

  8. 【转】朱兆祺教你如何攻破C语言学习、笔试与机试的难点(连载)

    原文网址:http://bbs.elecfans.com/jishu_354666_1_1.html 再过1个月又是一年应届毕业生应聘的高峰期了,为了方便应届毕业生应聘,笔者将大学四年C语言知识及去年 ...

  9. 【转载】Hyperledger学习小结

    Hyperledger学习小结 自学Hyperledger Composer也有段时间了,是时候对所学的知识总结一下了.因为没有实际项目参与的话,差不多也就到此为止了.后续可能会去了解一下以太坊的技术 ...

随机推荐

  1. MOCK.JS 生成随机数据,拦截 Ajax 请求

    mock.js 的用处 前后端分离 :让前端攻城师独立于后端进行开发. 增加单元测试的真实性 :通过随机数据,模拟各种场景. 开发无侵入 :不需要修改既有代码,就可以拦截 Ajax 请求,返回模拟的响 ...

  2. ASP.NET——两个下拉框来实现动态联动

    介绍: 在网页中.我们常常会遇到下图中的情况.首先在下拉框中选择所在的省.选择之后,第二个下拉框会自己主动载入出该省中的市.这样设计极大的方便了用户的查找.那这是怎样实现的呢? 1.建立数据库 &qu ...

  3. VC中MessageBox的常见用法

    一.关于MessageBox       消息框是个很常用的控件,属性比较多,本文列出了它的一些常用方法,及指出了它的一些应用场合.       1.MessageBox("这是一个最简单的 ...

  4. ClassLoader—流程观察程序执行类加载-verbose:class

    当调试器,有时你需要看到程序加载的类.记忆的恢复情况.本地接口调用,等等..这时候就需要-verbose命令. 在myeclipse能够通过右键设置(例如以下).也能够在命令行输入java -verb ...

  5. 2077 汉诺塔IV

    Problem Description 还记得汉诺塔III吗?他的规则是这样的:不允许直接从最左(右)边移到最右(左)边(每次移动一定是移到中间杆或从中间移出),也不允许大盘放到小盘的上面.xhd在想 ...

  6. Ubuntu环境下的Redis 配置与C++使用入门

      Redis是一个高性能的key-value数据库. Redisedis的出现,非常大程度补偿了memcached这类key/value存储的不足,在部分场合能够对关系数据库起到非常好的补充作用.它 ...

  7. android ListView之BaseAdapter的使用方式

    通常在使用自己定义适配器的时候,我们都会掌握一种固定的模式.充分利用convertView+缓存的方式. private ArrayList<ListBean> list ; privat ...

  8. IplImage 封装释放

    IplImage是openCV库中非常重要的一个结构体,库中的图像都是保存为这个结构体后再进行操作的,详细结构例如以下: </pre><pre> typedef struct ...

  9. selenium之多线程启动grid分布式测试框架封装(四)

    九.工具类,启动所有远程服务的浏览器 在utils包中创建java类:LaunchAllRemoteBrowsers package com.lingfeng.utils; import java.n ...

  10. 拥抱HTTP2.0时代 - HTTP2.0实现服务器端推送Push功能

    在当今的移动互联开发趋势中,nghttp2是一个很值得大家去关注的一个开源项目. 我们在nghttpx模块中实现了HTTP/2服务器推送功能,并且在我们的nghttp2.org网站中启用了该推送功能. ...