美文网首页
(一)线性表

(一)线性表

作者: Theodore_Pratt | 来源:发表于2018-07-05 22:26 被阅读21次

线性表(linear_list):n个数据元素的有限序列。如字母表、成绩表、价目表,图书索引表等。

  • 线性表中的元素可以是各种各样,但是同一线性表中的元素必定有相同特性,即属于同一数据对象,相邻元素之间存在着序偶关系。
  • 可以理解为多个点用线连起来
    o------o------o------o------o------o------o

线性表是一个相当灵活的数据结构,它的长度可根据需要增长或缩短,即对线性表的数据元素不进可以进行访问,还可以插入删除。

算法示例:

  • 1. 有两个线性表LA和LB,合并两个线性表LA=LA U LB(无重复元素)。
    伪代码:
// 获取长度
la_len = ListLength(La); 
lb_len = ListLength(Lb);
for (i = 1; i <= lb_len; i++) {
  GetElem(Lb, i, e); // 取Lb中的第i个元素赋给e
  // La中不存在相同的元素就插入到La中
  if (!LacateElem(La, e, equal)) ListInsert(La, ++la_len, e)
}

思路:遍历线性表LA,依次取得元素,从线性表LB中依次取得每个元素,并依值在线性表LA中进行查询对比,若不存在,则插入之。

  • 2. 已知线性表LA和LB中的数据元素按值非递减有序排列,现要求将LA和LB归并为一个新的线性表LC,且LC中的数据元素仍按值非递减有序排列
    如:
LA = (3, 5, 8, 11);
LB = (2, 6, 8, 9, 11, 15, 20);
则
LC = (2, 3, 5, 6, 8, 8, 9, 11, 15, 20);

思路:先设LC为空表,然后将LA或LB中的元素逐个插入到LC中即可。为使LC中元素按值非递减有序排列,可设两个指针ij分别指向LA和LB中某个元素,若设i当前所致的元素为a,j档期所致的元素为b,则当应插入到LC中的元素C为:

a <= b 时,c = a
a > b 时,c = b

显然,指针ij的初始值为1,在所指元素插入LC之后,在LA或LB中顺序后移,上诉归并算法如下所示:

InitList(Lc); // 初始化Lc
i = j = 1, k = 0;
// 获取la和lb的长度
la_len = ListLength(La);  
lb_len = ListLength(Lb);
while ((i <= la_len) && (j <= lb_len)) { // la和lb均非空
    GetElem(La, i, ai); 
    GetElem(Lb, j, bj); 
    if (ai <= bj) {
        ListInsert(Lc, ++k, ai);
        ++i;
    }else {
        ListInsert(Lc, ++k, bj);
        ++j;
    }
}
while (i <= la_len) {
    GetElem(La, i, ai); 
    ListInsert(Lc, ++k, ai);
}
while (i <= lb_len) {
    GetElem(Lb, j, bj); 
    ListInsert(Lc, ++k, bj);
}

算法中含有3个(while)循环语句,但只有当i和j均指向表中实际存在的元素时,才能取得数据元素的值并进行比较;并且当其中一个线性表的元素均已插入到线性表LC中后,只要将另一个线性表中剩余元素依次插入即可。因此,对于每一组具体的输入(LA或LB),后两个(while)循环语句只执行一个循环体。

相关文章

  • 线性表的相关操作

    集合 --- 创建线性表 解散 --- 销毁线性表 长度 --- 得到线性表的长度 出列 --- 从线性表删除一个...

  • 数据结构与算法(二)

    线性表及其顺序存储结构 线性表的基本概念 线性结构又称为线性表,线性表是最简单也是最常用的一种数据结构。 线性表的...

  • 数据结构 线性表 单链表 c语言实现可运行

    线性表 线性表概念 线性表定义:具有相同特性数据元素的有限序列。线性表的逻辑结构:线性结构。只有一个表头,只有一个...

  • 数据结构03-线性表之顺序表

    第三章 线性表之顺序表 第三章 线性表之顺序表一、什么是线性表?1> 概念2> 线性表的基本操作二、线性表的顺序存...

  • 线性表数据结构

    线性表 线性表就是数据排成像一条线的结构,每个线性表上的数据最多只有前和后两个方向。与线性表对立的是非线性表,如二...

  • 数据结构-双向链表

    (一)什么是链表? 链表是线性表的一种,所谓的线性表包含顺序线性表和链表,顺序线性表是用数组实现的,在内存中有顺序...

  • 线性表

    线性表 线性表(Linear List)。顾名思义,线性表就是数据排成像一条线一样的结构。每个线性表上的数据最多只...

  • [数据结构]第二章线性表(1)——线性表

    线性表 线性表的基本概念 线性表的定义 线性表是具有相同数据类型的n(n>=0)个元素的有限序列。 线性表的基本操...

  • 数据结构 线性表

    本文主要介绍数据结构 线性表的概念 线性表 基本概念 线性表是具有相同特性的数据元素的一个有限序列。 线性表一般表...

  • 数据结构与算法——线性表1

    线性表——顺序表 1.1线性表的定义线性表是一种最基础、最简单、也是最常用的数据结构,一个线性表是n个具有相同特性...

网友评论

      本文标题:(一)线性表

      本文链接:https://www.haomeiwen.com/subject/lgnyuftx.html