全球旧事资料 分类
广义表的创建和遍历
实验题目:实验题目:广义表的创建和遍历实验内容:实验内容:利用链式结构存储广义表,并对创建的广义表进行遍历
1需求分析
1)实验要求实现广义表的创建和遍历,利用链式结构存储元素。利用字符串表示广义表的结构,作为输入。程序读入字符串后,根据算法存储为广义表,然后对创建的广义表进行遍历,并注意输出表中元素。2)程序执行的命令包括:输入广义表创建广义表遍历广义表输出3)测试及结果广义表结构abcdeabcdabcdeabc预设结果abcdeabcdabcdea空格bc
2设计概要
根据问题分析,程序中主要包括四个主要函数:主函数、初始化头结点、建立广义表和遍历广义表。初始化头结点的方法与链表的初始化类似,就不再详细叙述;建立广义表主要是根据从字符串中读取的元素进行不同的操作以建立广义表;遍历则与建立相反,即根据广义表逐个访问表中元素,并通过元素所在节点的相关信息得出广义表的形式。
图1程序整体流程
下面将详细叙述:创建广义表1○将表示广义表的字符串读入字符串数组tableSIZE中。2○建立创建函数,输入为字符串数组和广义表头结点指针,返回值为头结点指针。3○建立存储结点地址的栈
f4○逐个输出字符串数组tableSIZE元素5○当输出为左括号时,将当前结点标记赋为1,当前指针入栈;申请新结点,将子表指针
指向新结点,然后将当前指针指向新结点地址;当输出为右括号时,当前指针指向出栈的指针;当输出为逗号时,申请新结点,将当前结点链接指针指向新结点,然后将新结点地址赋给当前指针;当输出为字符,即广义表元素时,将当前结点标记赋为0,并将字符输入当前结点
56○循环过程○,以字符串的结束作为循环的结束
图2广义表创建函数流程
遍历广义表建立遍历函数,输入为广义表头结点,返回值为空;建立存储结点地址的栈。由于广义表结构较为复杂,在遍历时需要使用循环嵌套:第一层循环以存储结点地址的栈为空为结束标志,其中嵌套了遍历循环和连续退栈循环。
f具体算法如下表:输出当前结点存储的元素遍历广义表结点循环当前结点标记为0输出逗号指针指向下一个结点输出左括号结束标志:当前结点的字表指针和链接指针均为空(当前结点子表指针和链接指针均为空,退出循环)输出当前结点存储的元素输出右括号指针指向出栈地址,作为当前结点图示流程如下:当前结点的链接指针不为空输出逗号当前结点标记为1当前结点地址入r
好听全球资料 返回顶部