线性表/链表/队列-1

来源:互联网 发布:access导入sql server 编辑:程序博客网 时间:2024/06/03 17:50

1.线性表:

1. 1本质

      list是零个/对个数据元素的集合。数据元素有顺序、有限、同类型。

      定义:线性表是具有相同类型的 n(>= 0)个数据元素的有限序列
                             (a1, a2, …, an)    ai 是表项,n 是表长度

1.2 相关操作

       线性表的一些常用操作:

       创建线性表:List* List_Create();
      销毁线性表:void List_Destroy(List* list);
      清空线性表:void List_Clear(List* list);
      将元素插入线性表:int List_Insert(List* list, ListNode* node, int pos);
      将元素从线性表中删除:ListNode* List_Delete(List* list, int pos);
      获取线性表中某个位置的元素:ListNode* List_Get(List* list, int pos);
      获取线性表的长度:int List_Length(List* list);

1.3 线性表顺序存储结构

      定义:线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。

              

       在C语言中可以用一维数组来实现顺序存储结构:
               存储空间的起始位置:数组node
              线性表的最大容量:数组长度MAXSIZE
              线性表的当前长度:length

                           

            获取元素操作:

                   判断线性表是否合法
                   判断位置是否合法
                   直接通过数组下标的方式获取元素

                   

              插入元素操作:插入元素算法
                     判断线性表是否合法
                    判断插入位置是否合法
                    把最后一个元素到插入位置的元素后移一个位置
                    将新元素插入
                    线性表长度加1

                       

                 删除元素操作:删除元素算法
                        判断线性表是否合法
                       判断删除位置是否合法
                       将元素取出
                       将删除位置后的元素分别向前移动一个位置
                      线性表长度减1

                              

                优点:无需为线性表中的逻辑关系增加额外的空间
                         可以快速的获取表中合法位置的元素
                缺点:插入和删除操作需要移动大量元素
                        当线性表长度变化较大时难以确定存储空间的容量

1.4线性表的链式存储结构

        定义:为了表示每个数据元素与其直接后继元素之间的逻辑关系,每个元素除了存储本身的信息外,还需要存储指示其直接后继的信息。

             

             链式存储逻辑结构:n个结点链接成一个链式线性表的结构叫做链表,当每个结点中只包含一个指针域时,叫做单链表。

            链表的基本概念:表头结点、数据结点、尾结点

            链式存储结构:在C语言中可以用结构体来定义链表中的指针域,链表中的表头结点也可以用结构体实现

                                       获取第pos个元素操作

                                      插入元素操作

                                      删除元素操作

0 0
原创粉丝点击