2014.3.6-C语言学习小结

链表基础:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
知识点:
    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语言学习小结,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。