近期在阅读一个开源的C 代码。里面用到了大量的STL里面的东西。或许是自己一直用C而非常少用C 来实现算法的原因。STL里面大量的模板令人心烦。一直对STL的效率表示怀疑,但在网上搜到这样一个帖子,说C的标准库里面高速排序比STL的标准排序要慢 于是,便认真的看了下二者的源代码,发现C 里面的std::sort综合运用了部分高速排序和堆排序算法,而C标准库里面用的是通用数据结构的高速排序,C标准 ...
2016-01-13 08:32 0 1956 推荐指数:
注意:没有使用malloc和free;加了一个头文件,用于清屏和暂停;还有就是一个错误特别容易被忽略,那就是主函数中声明了LinkList p,然后就直接创建链表,忘了给p分配空间。一定要先初始化链表 ...
本节继续介绍线性表的另外一种链式表示——静态链表。(前面介绍的链表称为 动态链表 )。 逻辑结构上相邻的数据元素,存储在指定的一块内存空间中,数据元素只允许在这块内存空间中随机存放,这样的存储结构生成的链表称为静态链表。 静态链表和动态链表的区别:静态链表限制了数据 ...
抽象数据类型 (abstract data type,ADT) 抽象数据类型是一些操作的集合。抽象数据类型是数学中的定义,在ADT中,我们不关心操作是如何被实现的。因此,这可以看做是模块化的扩充。例如表,树,图和它们的操作一起可以看做是抽象数据类型,就想整数,实数和布尔变量是数据类型一样。整数 ...
代码如下: #include<stdio.h> #include<stdlib.h> /*************************************** * 创建一个队列 * 两个结构体,一个是链表,另一个结构体由队头和队尾组成 * 申请空间 ...
1.栈顶是没有元素的,栈顶是一个空值 2.把一个元素压进栈时,不要给栈顶的地址赋值,而是赋值给指针 例如:你在结构体中定义了 char *top; 那么你要把元素date赋值给*top,而不是top 赋值完成后,top++,因为栈顶没有值 代码 ...
1.首先,将*list(头指针)赋值给p,这样p也指向链表的第一个结点,成为链表的表头 2.然后判断只要p不为空,就将p指向下一个的指针赋值给q,再释放掉p 3.之后再将q赋值给p,用 ...
一、栈的基本概念 1.栈的定义 栈是一种只能在一端进行插入或删除的线性表。其中允许进行插入或删除操作的一端称为栈顶(top)。栈的插入和删除操作一般称作入栈和出栈。 2.栈的特点 先进后出 3.栈的存储结构 顺序栈和链式栈 注意:链式栈通常采用单链表实现,并规定所有的操作都是在单链表 ...