网站大量收购独家精品文档,联系QQ:2885784924

数据结构实验广义表.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《数据结构》实验报告 实验目: 实验目的: 实验内容: 一、需求分析 二 概要设计 Snode *Push(Snode *top,node *input) 实现指针入栈 Snode *Pop(Snode *top,node **output) 实现指针出栈 node *create() 广义表的建立 void print(node *head) 广义表的输出 本程序包括三个模块: 主程序模块 广义表的创建 广义表的遍历 入栈模块 出栈模块 模块调用图: 三 详细设计 typedef struct node { char data; /*存储数据*/ int tag; /*用以标记,标记为1时为左括号,标记为0时为字符,标记为-1时为新开辟节点*/ struct node *hp; /*该指针指向字表*/ struct node *tp; /*该指针指向后续节点*/ }node; //定义链栈 typedef struct Snode { node *data; struct Snode *next; }Snode; Snode *top node *input Snode *s Snode *p; node **output node *p,*q,*head; 2.每个模块的分析: 主程序模块: int main() { node *head; printf(请输入广义表:\n); head=create(); printf(该广义表为:\n); print(head); getchar(); getchar(); return 0; } 广义表的创建: node *create() { node *p,*q,*head; /*指针p是一个移动指针,指针q用以开辟新节点,head为头指针*/ char x; /*输入字符*/ Snode *top; /*栈顶指针*/ top=NULL; /*栈顶置空*/ q=(node *)malloc(sizeof(node)); /*申请新节点*/ q-tag=1; /*广义表形式第一个字符必为左括号*/ scanf(%c,x); /*输入字符*/ head=q; /*广义表头结点指向新开辟节点*/ p=head; /*活动指针指向头结点*/ top=Push(top,p); /*该节点指针入栈*/ q=(node *)malloc(sizeof(node)); /*开辟新节点*/ q-tag=-1; /*新节点标记为-1*/ p-hp=q; /*上一个读到的是左括号,将新节点链到当前节点的子表*/ p-tag=1; /*当前节点为左括号,标记为1*/ p-data=NULL; /*当前节点数据域为空*/ p=p-hp; /*活动指针移到当前节点的子表*/ scanf(%c,x); /*接着输入数据*/ while(top!=NULL) /*遇到左括号进栈,右括号退栈,栈空循环结束*/ { if(x==() /*遇到左括号*/ { q=(node *)malloc(sizeof(node)); /*申请新节点*/ q-tag=-1; /*新节点标记均为-1*/ p-hp=q; /*新节点链到当前节点的子表*/ p-tag=1; /*因是左括号,当前节点标记为1*/ p-data=NULL; /*数据域为空*/ top=Push(top,p); /*指针入栈*/ p=p-hp; /*移动指针到当前节点的子表*/ } else if(x==,) /*遇到逗号*/ { q=(node *)malloc(sizeof(node)); /*申请新节点,标记-1*/ q

文档评论(0)

精品报告 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档