PS:资料来源慕课网视频。

一、什么是线性表

线性表是n个数据元素的有限序列。

分类:

二、补充知识点

1、栈和队列有出操作、入操作,对应线性表(数组)为插入元素和删除元素,而线性表中要获取指定元素值可直接使用getelem()函数,获取后并不删除元素,可重复获取。

【与只能使用一次的栈、队列有区别】

2、顺序表:遍历和寻址非常快,插入、删除效率低。

3、《链表算法说明》课程评论:静态链表基于数组,动态链表基于结构体,所以线性表中的链表也有顺序存储结构

4、《链表编码实战一》课程笔记:

单链表中第一个节点的数据域是没有意义的!!!因为这是一个哨兵节点,没有别的指针指向这个头节点的数据域。并且头节点并不算在链表的长度当中!

5、《链表编码实战一》课程笔记:

初始化的过程是建立头结点,而且与顺序表不同的是,链表的表长size是不需要预先定义的,因为他可以从堆中临时申请,这点与顺序表有很大的不同。

按通用的做法,指向头结点的指针(即头指针)是固定的,头结点是不固定的,头结点不放元素,只放链表第一个结点的地址。

如果新插入或者删除的元素不是链表的第一个带元素的结点,或者这个位置的结点,头结点就是固定的。

如果新插入一个结点到头结点的下一个结点,或者删除头结点的下一个结点,头结点中存放的指针就变了,头结点也就变了。

6、《链表编码实战三》课程笔记:

哨兵节点(sentinel)是一个哑元节点(dummy node),可以简化边界条件。是一个附加的链表节点,该节点作为第一个节点,它的值域中并不存储任何东西,

只是为了操作的方便而引入的。如果一个链表有哨兵节点的话,那么线性表的第一个元素应该是链表的第二个节点。

7、《链表编码实战四》课程笔记:

单链表是有表头结点的,表头结点并不存储数据,只是一个牵头作用,方便我们通过它来寻找到链表的其他所有元素。

因此单链表的元素个数也不把它包括在内,第0个结点就是表头结点的下一个结点。

三、应用实例-通讯录

#include <stdlib.h>
#include <iostream>
#include <string>
#include "List.h"
#include "NodeList.h"
using namespace std; int menu();
void newPerson(NodeList *p);
void deletePerson(NodeList *p); void main ( )
{
int userorder=;
NodeList p; while(userorder!=)
{
userorder=menu();
switch(userorder)
{
case :
cout<<"用户指令-----新建联系人"<<endl;
newPerson(&p);
break;
case :
cout<<"用户指令-----删除联系人"<<endl;
deletePerson(&p);
break;
case :
cout<<"用户指令-----浏览通信录"<<endl;
p.listTraverse();
break;
case :
cout<<"用户指令-----退出通信录"<<endl;
break;
default:
break;
}
} system("pause"); } int menu()
{
cout<<"功能菜单"<<endl;
cout<<"1.新建联系人"<<endl;
cout<<"2.删除联系人"<<endl;
cout<<"3.浏览通信录"<<endl;
cout<<"4.退出通信录"<<endl;
cout<<"请输入:";
int order;
cin>>order;
return order;
} void newPerson(NodeList *p)
{
Node node;
cout<<"请输入姓名:"<<endl;
cin>>node.data.m_strName;
cout<<"请输入电话号码:"<<endl;
cin>>node.data.m_strCode;
p->listInsertTail(&node);
} void deletePerson(NodeList *p)
{
Node node;
cout<<"请输入姓名:"<<endl;
cin>>node.data.m_strName;
cout<<"请输入电话号码:"<<endl;
cin>>node.data.m_strCode; int temp;
temp=p->locateElem(&node);
if (temp==-)
{
cout<<"该联系人不存在"<<endl;
return;
}
Node t;
p->listDelete(temp,&t);
cout<<"成功删除联系人"<<endl;
}

数据结构C++版-线性表的更多相关文章

  1. 【C#数据结构系列】线性表

    一:线性表 1.1:定义:零个或多个数据元素的有限序列 1.2: 线性表元素个数n定义为线性表的长度,n = 0称为空表,i 为数据元素ai在线性表中的位序. 1.3:满足线性表的条件:(1):有序, ...

  2. 【算法与数据结构实战】线性表操作-实现A并B,结果放入A中

    //数据结构与算法基础题1:线性表操作,实现A并B,结果放入A中 #include "stdafx.h" #include <iostream> #include &l ...

  3. PHP数据结构之二 线性表中的顺序表的PHP实现

    线性表 (一)基本特点:最基本.最简单.最常用的一种数据结构 在这种结构中: 1.存在一个唯一的被称为“第一个”的数据元素: 2.存在一个唯一的被称为“最后一个”的数据元素: 3.除第一个元素外,每个 ...

  4. C语言数据结构——第二章 线性表

    二.线性表 2.1-线性表简介 2.1.1-线性表的定义 线性表是由若干个相同特性的数据元素组成的有限序列.若该线性表不包含任何元素,则称为空表,此时长度为0,当线性表不为空时,表中的元素的个数就是线 ...

  5. C++ 数据结构 1:线性表

    1 数据结构 1.1 数据结构中基本概念 数据:程序的操作对象,用于描述客观事物. 数据的特点: 可以输入到计算机 可以被计算机程序处理 数据是一个抽象的概念,将其进行分类后得到程序设计语言中的类型. ...

  6. JAVA中的数据结构——集合类(线性表:Vector、Stack、LinkedList、set接口;键值对:Hashtable、Map接口<HashMap类、TreeMap类>)

    Java的集合可以分为两种,第一种是以数组为代表的线性表,基类是Collection:第二种是以Hashtable为代表的键值对. ... 线性表,基类是Collection: 数组类: person ...

  7. c语言数据结构学习心得——线性表

    线性表:具有相同数据类型的n(n>0)个数据元素的有限序列. 主要有顺序存储和链式存储. 顺序存储: 特点:地址连续,随机/存取,顺序存储. 建立:首地址/存储空间大小(数组),表长. 方式:静 ...

  8. 数据结构导论 四 线性表的顺序存储VS链式存储

    前几章已经介绍到了顺序存储.链式存储 顺序存储:初始化.插入.删除.定位 链式存储:初始化.插入.删除.定位 顺序存储:初始化 strudt student{ int ID://ID char nam ...

  9. 基于c语言数据结构+严蔚敏——线性表章节源码,利用Codeblocks编译通过

    白天没屌事,那我们就来玩玩线性表的实现吧,快要失业了,没饭吃了咋整哦 题目描述假设利用两个线性表LA和LB分别表示两个集合A和B(即:线性表中的数据元素即为集合中的成员),现要求一个新的集合A=A∪B ...

随机推荐

  1. [Catalan数三连]网格&有趣的数列&树屋阶梯

    如何让孩子爱上打表 Catalan数 Catalan数是组合数学中一个常出现在各种计数问题中的数列. 以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)的名字来命名. 先丢个公式(设第n项为$ ...

  2. mac 安装 pymssql 报错

    报错信息 _mssql.c:346:10: fatal error: 'sqlfront.h' file not found #include "sqlfront.h" ^~~~~ ...

  3. 浅谈学习selenium的一些知识点的总结

    学习自动化测试,先得学习一门语言.自动化对语言要求掌握的程度不深,但必须得会基本的入门语法. 我学习的是python2,简单,易懂,上手快. 每天敲就是了. 我的学习路径是: 先学习一段时间pytho ...

  4. error C2065: CoInitializeEx' : undeclared identifier 解决方法

    错误: error C2065: CoInitializeEx' : undeclared identifier 解决方法 原因: 本来程序的编译选项选择的是:使用标准windows库,当改为在静态库 ...

  5. FM算法组合估计

    #include <stdio.h> #include <math.h> #include <stdlib.h> #include <time.h> # ...

  6. CSS:百科

    ylbtech-CSS:百科 1.返回顶部 CSS (层叠样式表) 层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标 ...

  7. Tomcat运行错误示例三

    Tomcat运行错误示例三 最近碰到tomcat启动的问题,如图: 以前也碰见过这种情况,这次写的时候忘记加return,所以跳出了错误,加上之后的效果,如图: 参考网址 参考网址

  8. arttemplate 后台返回的数据格式问题

    1. 2.JSON.parse() 方法用于将一个 JSON 字符串转换为对象. $("body").on("click","#analyze&quo ...

  9. UVA - 10347 - Medians(由三中线求三角形面积)

    AC代码: #include<cstdio> #include<cmath> #include<algorithm> #include<iostream> ...

  10. JSON 教程首页

    JSON教程 JSON或JavaScript对象表示法是一个轻量级的基于文本的开放式标准,旨在为人类可读的数据交换. JSON格式最初是由Douglas Crockford规定,在RFC4627中描述 ...