栈和队列基本操作实验报告

  • 格式:doc
  • 大小:256.00 KB
  • 文档页数:10

下载文档原格式

  / 10
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验二堆栈和队列基本操作的编程实现

【实验目的】

堆栈和队列基本操作的编程实现

要求:

堆栈和队列基本操作的编程实现(2学时,验证型),掌握堆栈和队列的建立、进栈、出栈、进队、出队等基本操作的编程实现,存储结构可以在顺序结构或链接结构中任选,也可以全部实现。也鼓励学生利用基本操作进行一些应用的程序设计。

【实验性质】

验证性实验(学时数:2H)

【实验内容】

内容:

把堆栈和队列的顺序存储(环队)和链表存储的数据进队、出队等运算其中一部分进行程序实现。可以实验一的结果自己实现数据输入、数据显示的函数。

利用基本功能实现各类应用,如括号匹配、回文判断、事物排队模拟、数据逆序生成、多进制转换等。

【实验分析、说明过程】

分析:

进栈操作

先创建一个以x为值的新结点p,其data域值为x则进栈操作步骤如下:

将新结点p的指针域指向原栈顶S(执行语句p->next=S)。

将栈顶S指向新结点p(执行语句S=p)。

注:进栈操作的①与②语句执行顺序不能颠倒,否则原S指针其后的链表将丢失。

出栈操作

先将结点栈顶S数据域中的值赋给指针变量*x,则删除操作步骤如下:

结点p指针域指向原栈顶S(执行语句p=S)。

栈顶S指向其的下一个结点(执行语句S=S->next)

释放p结点空间(执行语句free(p))。

队列分析:用链式存储结构实现的队列称为链队列,一个链队列需要一个队头指针和一个队尾指针才能唯一确定。队列中元素的结构和前面单链表中的结点的结

构一样。为了操作方便,在队头元素前附加一个头结点,队头指针就指向头结点。

【思考问题】

1.栈的顺序存储和链表存储的差异?

答:栈的顺序存储有‘后进先出’的特点,最后进栈的元素必须最先出来,进出栈是有序的,在对编某些需要按顺序操作的程序有很大的作用。

链表存储:通过链表的存储可以实现链表中任意位置的插入元素,删除任意元素,可以实现无序进出。

2.还会有数据移动吗?为什么?

答:栈的顺序存储不会有数据移动,移动的只是指向该数据地址的指针。

3.栈的主要特点是什么?队列呢?

答:栈拥有‘后进先出’的特点;队列拥有‘先进先出’的特点。

4.栈的主要功能是什么?队列呢?

【实验小结】 (总结本次实验的重难点及心得、体会、收获)

【附录-实验代码】