数据结构C语言版:线性表之顺序栈

栈是一种特殊的线性表
栈是一种数据结构,是只能在某一端插入和删除的特殊线性表。它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。
栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶 (top),另一端为栈底(bottom);栈底固定,而栈顶浮动;栈中元素个数为零时称为空栈。插入一般称为进栈(PUSH),删除则称为退栈(POP)。 栈也称为后进先出表(LIFO–Last IN First Out表)。 Continue reading

数据结构C语言版:线性表之顺序表

线性表是一个线性结构。线性表采用顺序存储的方式

存储就称为顺序表。那么定义一种数据结构就是要描术出数据的逻辑结构、存储结构和运算集合。存储结构是一个结构体,运算集合包括:初始化、

插、删、改、打印、搜索等。顺序表的类型描述如下:
ADT sequence_list{
数据集合 K: K={k(1), k(2), …,k(n)}, n >=0, K中的地素是datatype类型;
数据关系 R: R={r}
r={ | i=1, 2, …, n-1}
操作集合:
(1) void init(sequence_list *slt);顺序表的初始化—置空表
(2) void append(sequence_list *slt, datatype x); 在顺序表后部插入值为x的结点
(3) void display(sequence_list slt);打印顺序表的各结点值
(4) int empty(sequence_list slt);判断顺序表是否为空
(5) int find(sequence_list slt, datatype x);查找顺序表中值为x的结点位置
(6) datatype get(sequence_list slt, int i);取得顺序表中第i个结点的值
(7) void insert(sequence_list *slt, datatype x, int position);在顺序表的postion位置插入值为x的结点
(8) void dele(sequence_list *slt, int position);删除表中第position位置的结点
}ADT sequence_list;
下面用C代码实现:
Continue reading

代码揭秘:C语言基本数据类型

为了有效地组织数据,规范数据的使用,提高程序的可读性,高级语言都为数据提供了一个用以限定和规范其存在的形式的属性——数据类型。

首先,我们已经知道计算机里面存储了很多二进制序列,但是不能直接面对它们,于是计算机使用一种称为“编码”的手段,使统一模式的二进制序列能够呈现出不统一的意义。 Continue reading

代码揭秘:汉字编码和Unicode编码

ASCII码仅用7、8位就解决了英文字母与常用符号的编码问题,但仅用这么少的位来实现数以万计的汉字编码显然不现实。

由于汉字的编码出现在ASCII码之后,所以汉字编码必须兼容ASCII码。为了解决这两个问题,人们准备采用丙个字节来表示一个汉字。由于ASCII码占用7位的历史原因,所以这种汉字编码方式规定:对于连续的两个字节,只有在两个字节的第7位(最低位从0开始)都是1的情况下,才认为这两个字节合起来表示一个汉字。这样不同长度混排的编码方式,通常被叫“MBCS(Muilti-Bytes Character Set,多字节字符集)”。 Continue reading

代码揭秘:ASCII码

数字在计算机中需要转换成二进制序列后方能进行存储,字符也是如此。

ASCII码适用于所有拉丁文字,它用7位二进制数进行编码,可以表示128个字符(这是应该是我们很熟悉的)。

也就是说,字符数据以ASCII码形式存放在内存中,其存储形式与整数的存储形式在本质上是相同的(都是简单的二进制序列)。于是,字符数据和整数数据之间就是通用的。所以我们也可以对字符数据进行算术运算,这就相当于对它们的ASCII码进行算术运算。归根结底,对于计算机系统和硬件本身而言,“数据类型”这个概念是不存在的。

Continue reading