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=0; NodeList p; while(userorder!=4) { userorder=menu(); switch(userorder) { case 1: cout<<"用户指令-----新建联系人"<<endl; newPerson(&p); break; case 2: cout<<"用户指令-----删除联系人"<<endl; deletePerson(&p); break; case 3: cout<<"用户指令-----浏览通信录"<<endl; p.listTraverse(); break; case 4: 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==-1) { cout<<"该联系人不存在"<<endl; return; } Node t; p->listDelete(temp,&t); cout<<"成功删除联系人"<<endl; }
原文地址:https://www.cnblogs.com/Tang-tangt/p/9557515.html