栈溢出实验报告(3)

2018-12-23 00:31

do{

printf(\\n);

printf(第一次使用必须初始化!\\n); printf(\\n);

printf(\\n 主菜单 \\n); printf(\\n 1 初始化顺序栈 \\n); printf(\\n 2 插入一个元素 \\n); printf(\\n 3 删除栈顶元素 \\n); printf(\\n 4 取栈顶元素 \\n); printf(\\n 5 置空顺序栈 \\n); printf(\\n 6 结束程序运行 \\n); printf(\\n--------------------------------\\n); printf(请输入您的选择( 1, 2, 3, 4, 5,6)); scanf(%d,&cord); printf(\\n); switch(cord) { case 1:

{ q=(sqstack*)malloc(sizeof(sqstack)); initstack(q); outstack(q); }break;

case 2: { printf(请输入要插入的数据元素:a=); scanf(%d,&a); push(q,a); outstack(q); }break; case 3: { pop(q); outstack(q); }break; case 4:

{ y=gettop(q);

printf(\\n栈顶元素为:%d\\n,y); outstack(q); }break; case 5:

{ setempty(q);

printf(\\n顺序栈被置空!\\n); outstack(q); }break; case 6: exit(0); }

}while (cord<=6);

} [实验2] 栈的链式表示和实现 实验内容与要求: 编写一个程序实现链栈的各种基本运算,并在此基础上设计一个主程序,完成如下功能: (1)初始化链栈 (2)链栈置空 (3)入栈 (4)出栈

(5)取栈顶元素

(6)遍历链栈 分析:

链栈是没有附加头结点的运算受限的单链表。栈顶指针就是链表的头指针。 注意:

(1)linkstack结构类型的定义可以方便地在函数体中修改top指针本身 (2)若要记录栈中元素个数,可将元素个数属性放在linkstack类型中定义。 (3)链栈中的结点是动态分配的,所以可以不考虑上溢。 参考程序:

#include stdio.h #include malloc.h #include stdlib.h typedef int elemtype;

typedef struct stacknode { elemtype data; stacknode * next; }stacknode;

typedef struct {

stacknode * top; //栈顶指针 }linkstack; /*初始化链栈*/

void initstack(linkstack * s) { s->top=null;

printf(\\n已经初始化链栈!\\n); }

/*链栈置空*/

void setempty(linkstack * s) { s->top=null;

printf(\\n链栈被置空!\\n); }

/*入栈*/

void pushlstack(linkstack * s, elemtype x) { stacknode * p;

p=(stacknode *)malloc(sizeof(stacknode)); //建立一个节点。 p->data=x; p->next=s->top; //由于是在栈顶pushlstack,所以要指向栈顶。


栈溢出实验报告(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:浅谈新课程中学生学习方式的改变)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: