编写一个程序,实现链栈的各种基本运算

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

软件技术基础试验二链栈的各种基本运算的实现
班级:
学号:
姓名:
一、实验题目
编写一个程序,实现链栈的各种基本运算,并在此基础上设计一个主程序完成如下功能:
(1)初始化链栈
(2)按指定的元素顺序将多个元素进栈
(3)输出从栈顶到指定位置的元素
(4)判断链栈是否非空
二、实验目的
(1)掌握链栈的基本运算:栈的初始化、进栈、出栈、判断栈的空否。

(2)掌握运用 C 语言上机调试链栈的基本方法。

三、调试通过并正确执行给定功能要求的实验代码
#include "stdafx.h"
#include<stdio.h>
#include<stdlib.h>
struct link
{
char data;
link *next;
};
void inistack(link *top)
{top->next=NULL;}
void push(link *top,int x)
{
link *s;s=new link;
s->data=x;s->next=top->next;top->next=s;
}
int empty(link *top)
{
if(top->next==NULL) return(1);
else return(0);
}
void pop(link *top)
{
link *s;
s=top->next;
printf("%c ",s->data);
if(s!=NULL)
{top->next=s->next;delete(s);}
}
void main()
{
int i=0,j=0,flag,t,length;
char ch,zz[30];
link *top;
FILE *fp;
if((fp=fopen("D:\\a.txt","rt"))==NULL)
{printf("cannot open file");}
ch=fgetc(fp);
while(ch!=EOF) //把从文件中读取的字符存放在zz中
{
zz[i]=ch;
ch=fgetc(fp);
i++;
}
fclose(fp);
top=new link;
inistack(top);
printf("请输入链栈长度:");
scanf("%d",&length);
for(i=0;i<length;i++)
{
push(top,zz[i]);
}
printf("请输入指定位置:");
scanf("%d",&t);
for(j;j<t;j++)
{
flag=empty(top);
if(flag==1)
{printf("\n链栈已经为空栈!");break;}
pop(top);
}
}
四、实验结果截图。

相关文档
最新文档