数据结构学习笔记(一)

来源:互联网 发布:淘宝网支架白板 编辑:程序博客网 时间:2024/04/28 17:18

数据结构学习笔记(一)

排序

                   内部排序 —— 数据记录在内存中进行排序

                   外部排序 —— 外部排序是因为排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问内存

                  

                                                                                    1、插入排序               a、直接插入排序

                                                                                                                         b、希尔排序

                                                                                    2、选择排序               a、简单选择排序                                            

                                     (使用内存)                                                            b、堆排序

                                  内部排序                                  3、交换排序               a、冒泡排序

                                                                                                                         b、快速排序              

                                                                                    4、归并排序     

                                                                                    5、基数排序

                   排序

                                    

                                     (内存和外存结合使用)

                                               外部排序

 

         数据结构:研究怎么利用存储区记录数字以及如何使用这些存储区

                  

         算法:是解决某些常见问题的方法

 

         数据结构关注多个数字之间的关系,同样一组数字之间的关系可以从两个完全不同角度去描述一个角度关注数字之间固有的关系,这种关系和计算机无关,这种描述数字关系叫逻辑结构另一个角度关注记录数字的存储区之间的关系,这个关系只能在计算机里成立,数据物理结构

        

         逻辑结构之间有四种可能

                   1、集合结构:所有数据可以看作一个整体

                   2、线性结构:可以使用一条有顺序的线把所有数据连接起来

                   3、树状结构:所有数据从一个起点开始向一个方向逐级扩展,每个数据可以扩展出多个其他数据

                   4、网状结构:任意两个数字之间都可以有直接联系,数据之间的联系没有统一的方向

 

         物理结构之间有两种可能

                   1、顺序结构:所有记录数字的存储区在内存里连续排列的(可以进行随即访问)

                                               优点:适合存储区数据没什么关系的数据

                                               缺点:存储区一旦创建成功就很难改变大小       

                                                                

                   2、链式结构:多个存储区之间相互独立,任意两个存储区之间可以使用指针连接

 

                                     链式物理结构里面包含很多存储区,每个存储区叫做一个节点

                                     单向线性链式物理结构中任意两个存储区之间都有前后顺序(每个节点里只需要包含一个指针)

                                     单向线性链式物理结构中最后一个节点里的指针必须要空指针NULL 

3       typedef struct node{

                 4          int num;

                 5          struct node * p_next;

                 6       }node;

 

                  12         head.p_next = &node1;

                  13        node1.p_next = &node2;

                  14        node2.p_next = &node3;

                  15        node3.p_next = &tail;

                 16    

                  17        node * p_node = NULL;

                  18    

                  19        for(p_node = &head; p_node->p_next != &tail; p_node =p_node->p_next)

                  20            {

                  21            node * p_first =p_node;

                 22             node * p_mid = p_first->p_next;

                  23            node * p_last = p_mid->p_next;

                  24            if( p_mid->num > node4.num || p_mid == &tail)

                  25            {

                  26                p_first->p_next = &node4;

                  27                node4.p_next = p_mid;

                  28                break;

                  29            }

                  30         }

                 

                   32     for(p_node = &head; p_node->p_next!= &tail; p_node = p_node->p_next)

                  33     {

                  34         node * p_first = p_node;

                  35         node * p_mid = p_first->p_next;

                  36         node * p_laset = p_mid->p_next;

                  37

                  38         if(p_mid != &tail)

                  39         {

                  40             printf("%d ",p_mid->num);

                  41         }

                  42     }

 

                   76         while( head.p_next != &tail )            //--------------------内存释放

                  77         {

                  78             node * p_first = &head;

                  79             node * p_mid = p_first->p_next;

                  80            node * p_last =p_mid->p_next;

                  81            

                  82             p_first->p_next = p_last;

                  83             free(p_mid);

                  84             p_mid = NULL;

                  85         }



数据结构学习笔记(二)

0 0
原创粉丝点击