博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构
阅读量:5103 次
发布时间:2019-06-13

本文共 1241 字,大约阅读时间需要 4 分钟。

1. 线性表

1.1 顺序表

存在两种存储方式,定长和不定长。定长顺序表类似普通数组,不定长顺序表允许长度动态扩充。

1.2 链表

单链表进行插入删除操作需要考虑到操作节点是否是链表的头结点,因为对头结点进行操作时, 需要修改链表指针的指向,对其进行专门处理。

单链表插入新节点的两种方法:前插法和后插法。前插法使得每次插入新结点在表的前端进行,后插法在表的后端进行,并推荐设置一个尾指针。

链表的变形:循环链表,双向链表。

可以用数组构成一个静态链表,数组中每个元素附加一个链接指针,指向下一个元素的数组下标。

1.3 线性表的C++,Java 实现

template < class T, size_t N > class array;std::arraytemplate < class T, class Alloc = allocator
> class vector;std::vectortemplate < class T, class Alloc = allocator
> class list;std::listtemplate < class T, class Alloc = allocator
> class forward_list;std::forward_list

std::array 类似于用户自定义数组,实例化类模板时需要传入数组长度N,允许通过[ ] 访问

std::vector 可变长数组

std::list 双链表实现,std::forward_list 单链表实现

 

2. 栈(Stack)

栈保证了表中数据的后进先出(LIFO)。如果采用链式栈,可以在表头部进行插入删除操作。

栈的应用:(1) 括号匹配;(2) 表达式计算

 C++中的栈

template 
> class stack;std::stack

 

3. 队列(Queue)

队列保证了线性表插入删除操作的先进先出(FIFO)

template 
> class queue;std::queue

优先级队列(priority queue)

template 
,class Compare = less
> class priority_queue; std::priority_queue

双端队列(deque)

在线性表的两端均可进行插入删除操作

template < class T, class Alloc = allocator
> class deque;std::deque

 

转载于:https://www.cnblogs.com/zxit/p/8973491.html

你可能感兴趣的文章
TAR 命令
查看>>
【菜鸟做水题】: 杭电1004
查看>>
MySql update inner join!MySql跨表更新 多表update sql语句?如何将select出来的部分数据update到另一个表里面?...
查看>>
我最宏大的个人愿望
查看>>
北漂周记--第5记--拼命编程
查看>>
比赛总结一
查看>>
SpringBoot项目打包
查看>>
JSP的3种方式实现radio ,checkBox,select的默认选择值
查看>>
Linux操作系统 和 Windows操作系统 的区别
查看>>
《QQ欢乐斗地主》山寨版
查看>>
文件流的使用以及序列化和反序列化的方法使用
查看>>
Android-多线程AsyncTask
查看>>
第一个Spring冲刺周期团队进展报告
查看>>
C++函数基础知识
查看>>
红黑树 c++ 实现
查看>>
News应用
查看>>
流式套接字:基于TCP协议的Socket网络编程(案例1)
查看>>
被Json格式化后那可怜的时间
查看>>
Android 获取网络链接类型
查看>>
报表服务框架:WEB前端UI
查看>>