栈和列表的区别
来源:互联网 发布:巫师2优化 编辑:程序博客网 时间:2024/05/21 09:08
栈的头文件如下:
#define MAXSIZE 100
typedef int datatype;
typedef struct{
datatype a[MAXSIZE];
int top;
}sequence_stack;
由此可以看出,栈在开始就指定了长度,申请好了内存空间。栈,作为线性存储的重要手段,其最大的特点是存储上逻辑结构和物理结构相同。
链表的头文件如下:
typedef int datatype;
typedef struct link_note{
datatype info;
struct link_note *next;
}note;
相对于栈,链表在存储上逻辑结构相邻的节点,物理结构并不相同,而且是动态的申请(释放)内存。
从以上分析看来貌似是两者各有优劣。仔细分析我们发现,链表的优势更为明显!
首先,链表支持动态的增加节点,而栈只能从用 从一开始 就申请的那么多节点(如演示头文件的MAXSIZE)。由于栈在逻辑和物理上的结构 统一,貌似可以提高插入或者删除的性能(减少cpu,内存的负担),但细心分析你会发现——这时候系统会不断的进行赋值操作,反而增加了硬件的负担。而链表只进行那么屈指可数的几步就可以完成所有的操作。
以上只是一些粗略的分析,下面我们进行详细 分析!
栈,最大的特点就是进栈出栈操作,由此 可以 进行一些特殊操作(括号匹配,算术表达式求值等)这些事链表不能取代的!
队列可以说是栈的简单变形,其性能的优越性真正体现还是在顺序循环 队列上。如果用顺序循环 队列设计的小系统可以很方便的执行进栈出栈操作,而且能保持物理和 逻辑模型的 统一。
链表的高性能主要还是在双向链表,我们甚至可以使用二分法 来遍历整个链表,这个将是对 系统性能翻倍的提高!
但是,因为指针也是数据类型的一种,也就意味着它要占用内存空间。另外它不断的操作物理位置不相邻的指针, 这样就对内存的寻址要求较高。换句话说 :内存频率越高 ,颗粒越好,链表的执行效率越高。
#define MAXSIZE 100
typedef int datatype;
typedef struct{
datatype a[MAXSIZE];
int top;
}sequence_stack;
由此可以看出,栈在开始就指定了长度,申请好了内存空间。栈,作为线性存储的重要手段,其最大的特点是存储上逻辑结构和物理结构相同。
链表的头文件如下:
typedef int datatype;
typedef struct link_note{
datatype info;
struct link_note *next;
}note;
相对于栈,链表在存储上逻辑结构相邻的节点,物理结构并不相同,而且是动态的申请(释放)内存。
从以上分析看来貌似是两者各有优劣。仔细分析我们发现,链表的优势更为明显!
首先,链表支持动态的增加节点,而栈只能从用 从一开始 就申请的那么多节点(如演示头文件的MAXSIZE)。由于栈在逻辑和物理上的结构 统一,貌似可以提高插入或者删除的性能(减少cpu,内存的负担),但细心分析你会发现——这时候系统会不断的进行赋值操作,反而增加了硬件的负担。而链表只进行那么屈指可数的几步就可以完成所有的操作。
以上只是一些粗略的分析,下面我们进行详细 分析!
栈,最大的特点就是进栈出栈操作,由此 可以 进行一些特殊操作(括号匹配,算术表达式求值等)这些事链表不能取代的!
队列可以说是栈的简单变形,其性能的优越性真正体现还是在顺序循环 队列上。如果用顺序循环 队列设计的小系统可以很方便的执行进栈出栈操作,而且能保持物理和 逻辑模型的 统一。
链表的高性能主要还是在双向链表,我们甚至可以使用二分法 来遍历整个链表,这个将是对 系统性能翻倍的提高!
但是,因为指针也是数据类型的一种,也就意味着它要占用内存空间。另外它不断的操作物理位置不相邻的指针, 这样就对内存的寻址要求较高。换句话说 :内存频率越高 ,颗粒越好,链表的执行效率越高。
0 0
- 栈和列表的区别
- 字典和列表的区别
- 字典和列表的区别
- 数组和列表的区别
- 列表中append 和 extend的区别
- 初始化列表和赋值的区别.
- 初始化列表和赋值的区别.
- python中字典和列表的区别
- 构造函数和初始化列表的区别
- python 列表和元组的区别
- 生成器表达式和列表解析的区别
- 列表和原组的区别和相似点
- :-) 参数列表为空和为void 的区别
- 构造函数初始化列表和函数内部赋值的区别
- 成员初始化列表和构造函数体初始化的区别
- 构造函数初始化列表和赋值的区别
- 函数参数列表为空和void的区别
- C++初始化列表和大括号里构造的区别
- CentOS虚拟机如何设置共享文件夹,并在Windows下映射网络驱动器?
- 观《那人那山那狗》有感
- JSON 解析相关 知识
- 数字图像处理—频域变换简单说明
- Dalvik字节码类型描述符
- 栈和列表的区别
- 给老板汇报技术规划的一些要点
- 源代码编译成托管代码托管代码合并成程序集
- 计算机网络一些基本疑问解答和基础常识(一)
- uva 239 小球钟
- TortoiseSVN使用简介
- Java Resource路径小结
- 直方图均衡化
- WPF快速入门1-XAML