线性表

作者: 06ea7f822f4f | 来源:发表于2020-07-26 01:26 被阅读0次

什么是线性表

n个具有相同特性的数据元素的有限序列。
数据元素之间是一对一的关系。

线性表在数据结构中的分类

1、顺序表:逻辑结构相邻,物理结构相邻。
典型代表:数组。
2、链表:逻辑结构相邻,物理结构不一定相邻。
代表:数据结构中的栈、队列

关于逻辑结构和物理结构的介绍,可参考链接: https://www.cnblogs.com/tonglingliangyong/p/3944979.html

顺序表与链表的一些属性

顺序表:
优点是随机存取表中的任意元素。
不足是做插入或删除操作时,需移动大量元素。
链表:  
优点是随机插入或删除时只需修改指针指向,不需要移动元素。
不足是不能对元素进行随机存取。

顺序表与链表的存在形式(以下C/C++形式呈现)

 数组: int array[] = {1, 2, 3, 4};
 链表: struct ListNode {
                          int value;//数据域
                           ListNode* next;//指针域
                         };

应用举例(思路可参考文末)

一、数组

1.给定一个数组 {1, 2, 3, 4, 5},将数组中的元素逆序

二、链表

1.给定一个数组nums和一个目标值,
在该数组中找出和为目标值的那两个整数,
并返回他们的数组下表。
eg:nums = [2, 7, 11, 15]  target = 9 
因为nums[0] + nums[1] = 2 + 7 = 9  
所以,返回[0, 1]
2.给定一个链表:1->2->3->4->5,翻转链表,
使得最后结果为:5->4->3->2->1
3.给定一个链表,删除链表的倒数第 n 个节点
eg: 1->2->3->4->5   n = 2  
删除倒数第二个节点后,链表变为: 1->2->3->5

思路:
一、数组

1.计算出数组a的长度:length  
2.依次交换a[0] a[length - 1]   
 a[1] a[length - 2] 等的值(可利用异或特性)

二、链表

1.(1)两层循环,遍历数组,找出满足条件的数据的下标,
时间复杂度为o(n^2)
(2)利用map特性,遍历一次数组,将数据作为key, 
下标index作为value,添加到map中。再遍历一次数组,
C++中,利用map.find(target - value)
来判断是否有满足条件的数据,
时间复杂度为o(n) + o(n),即为o(n)
2.利用4个指针,分别为pre、cur、next,
和tmp(暂存next指针的值),把原来next = cur->next,
修改为pre = cur->next
3.(1)遍历获取链表的长度,删除倒数第n个节点,
也就是删除正数第length - n + 1个节点
(2)用两个指针来处理,first,second,
 先将first指针从列表的开头向前移动 n+1步,
而第二个指针将从列表的开头出发,两个指针被n个节点分开,
同时移动两个指针保持恒定间隔,
直到first指针到达最后一个结点,
此时第二个指针将指向从最后一个结点数起的第 n个结点。
重新链接第二个指针所引用的结点的 next 指针
指向该结点的下下个结点
核心代码: while (first != NULL) {
        first = first.next;
        second = second.next;
    }
    second.next = second.next.next;

相关文章

  • 线性表的相关操作

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

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

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

  • 数据结构与算法(二)

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

  • 线性表及应用

    线性表 “线性表(List):零个或多个数据元素的有限序列。” 线性表的顺序存储结构 线性表的顺序存储结构,指的是...

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

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

  • 数据结构之线性表

    1、线性表-顺序表线性表-顺序表

  • 线性表数据结构

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

  • 大话数据结构 - 线性表

    代码GitHub地址 线性表 线性表需要相同的数据类型 线性表的处理方式都是先取代,后目的。比如删除链式线性表的某...

  • 数据结构-线性表(顺序表和链表)

    大纲:理解线性表的逻辑结构掌握线性表的顺序存贮结构和链式存贮结构;掌握线性表基本操作的实现。了解线性表的应用。 线...

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

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

网友评论

      本文标题:线性表

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