字符动态数组 c语言,用C语言实现一个动态数组

上两篇文章给出了词法分析的完整代码:

用C语言实现一个真正的词法分析器

用C语言写一个真正的词法分析器,细节代码

它只需要动态字符串和双向链表,这两个基础数据结构就可以。

接下来,是比较有难度的语法分析。

在说语法分析之前,先说一个基础的数据结构:动态数组。

动态数组,也就是C++的STL模板类中的vector。

C语言没有自带的vector,需要自己做个简单的实现。

动态数组,首先是一个数组,它的所有元素都可以通过数组索引访问,随机访问的效率是O(1)。

其次,它与通常的固定数组一样,可以使用索引正向或反向遍历。例如:

for (i = 0; i < vec->size; i++);

for (i = vec->size - 1; i >= 0; i--);

vec为动态数组的结构体指针,vec->size为它当前存储的元素个数。

再就是,它可以存储多种数据类型,即可以作为基础数据结构使用,而与所存储的数据类型无关。

最后,与固定数组不同,它可以随着元素的增加或删除,动态地改变大小。

它的所有元素,自然是顺序存储的,而且每个元素的大小一致。

在C语言中,一个可行的办法就是,只让它存储void*类型的指针:如果存储复杂的结构体类型,那么只存储结构体的指针;如果存储数字,因为指针的大小是机器的字长,数字的大小不会超过这个

你可能感兴趣的:(字符动态数组,c语言)