栈的基本操作

2019-03-03 21:21

栈的基本操作

题目:栈的基本操作(顺序存储和链式存储任选一种)

一需求分析

了解顺序栈,链式栈的定义;程序构建了进栈,出栈,空栈,和满栈等操作。

二、概要设计

1;/* 顺序栈的定义*/ #define MAXSIZE 100 typedef int ElemType; typedef struct{

ElemType data[MAXSIZE]; int top; }sqStack;

/* 链式栈的定义*/ typedef struct Lstack{ ElemType data; struct Lstack *next; }Lstack

2;/*创建一个顺序栈*/ void Create_Sqs(sqStack *s) {

int i, n;

printf(\ scanf(\ for (i = 1; i <= n; i++) scanf(\ s->top = n; }

2、本程序包含五个模块:

(1)主程序模块: void main(){

定义头文件;

定义类型; 接受命令; 处理命令; 输出; }

第 1 页 共 7 页

(2)顺序栈,链式栈的定义; (3)输入输出栈元素; (4)创建循环队列;

(5)入队,出队,输出值; 三、详细设计

1、定义头文件

#include #include 2、 类型定义,类型声明 /* 顺序栈的定义*/ #define MAXSIZE 100 typedef int ElemType; typedef struct{

ElemType data[MAXSIZE]; int top; }sqStack;

/* 链式栈的定义*/ typedef struct Lstack{ ElemType data; struct Lstack *next; }Lstack;

/*练习的主要内容,是栈和队列的基本操作*/ /*创建一个顺序栈*/

void Create_Sqs(sqStack *s) {

int i, n;

printf(\ scanf(\ for (i = 1; i <= n; i++) scanf(\ s->top = n; }

/*输出栈元素*/

void out_Sqs(sqStack *s) {

int i;

if (s->top == 0) { return; }

for (i = s->top; i > 0; i--) {

第 2 页 共 7 页

printf(\ }

printf(\}

/*进栈一个元素*/

void push(sqStack *s, ElemType e) {

if (s->top == MAXSIZE - 1) { printf(\ } else { s->top = s->top + 1; s->data[s->top] = e; } }

/*出栈一个元素*/

ElemType pop(sqStack *s) {

int x;

if (s->top == 0) { printf(\ return(-1); } else { x = s->data[s->top]; s->top = s->top - 1; return(x); } }

/* 循环队列的定义*/ typedef struct{

ElemType elem[MAXSIZE];

int front; //头指针,若队列不空,指向队头元素;

int rear; //尾指针,若队列不空,指向队尾元素的下一个位置 int full; }SqQueue;

/*创建一个循环队列*/

第 3 页 共 7 页

void create_sqQ(SqQueue * S) {

int n = 0; int i = 0;

ElemType data;

/*首先构造一个空队列*/ S->front = S->rear = 0; S->full=0;

/* 输入元素个数*/ printf(\ scanf(\ if (n > MAXSIZE) { printf(\ return; }

/*逐步输入元素的值*/ for (i = 0; i < n; i++) { scanf(\ S->elem[S->rear] = data; S->rear = (S->rear + 1) % MAXSIZE; if (S->rear == S->front) { printf(\ return; } }

return; }

/* 入队*/

ElemType EnQueue(SqQueue *S, ElemType e) {

if (S->rear == S->front) { printf(\ return (-1); }

S->elem[S->rear] = e;

S->rear = (S->rear + 1)% MAXSIZE; return e; }

/* 出队 */

第 4 页 共 7 页

ElemType delQueue(SqQueue * S) {

ElemType e;

if (S->front == S->rear && S->full==0) { printf(\ return(-1); }

e = S->elem[S->front];

S->front = (S->front + 1) % MAXSIZE; S->full=0; return e; }

/* 输出队列*/

void output_Queue(SqQueue *S) {

int i = 0;

if (S->front == S->rear && S->full==0) { printf(\ return; }

i = S->front;

while (i != S->rear) { printf(\ i = (i + 1) % MAXSIZE; }

printf(\ }

主函数: void main() {

sqStack s; SqQueue S; ElemType e; Create_Sqs(&s); out_Sqs(&s); push(&s, 10); out_Sqs(&s);

printf(\ out_Sqs(&s); system(\

第 5 页 共 7 页


栈的基本操作.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2010年二级建造师考试《建筑工程》真题及答案解析(文字版)

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

马上注册会员

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