C语言自定义栈和队列,C语言栈和队列的基本操作.doc

C语言栈和队列的基本操作

实验内容:

1.编写函数,采用链式存储实现栈的初始化、入栈、出栈操作。

2.编写函数,采用顺序存储实现栈的初始化、入栈、出栈操作。

3.编写函数,采用链式存储实现队列的初始化、入队、出队操作。

4.编写函数,采用顺序存储实现队列的初始化、入队、出队操作。

5.编写一个主函数,在主函数中设计一个简单的菜单,分别调试上述算法。

实验目的及要求:

1.掌握栈、队列的思想及其存储实现

2.掌握栈、队列的常见算法的程序实现

实验结果:

#include

#include

#define MAXSIZE 80

typedef struct

{int data[80];

int top;

}SeqStack;

typedef struct lnode

{int data;

struct lnode *next;

}StackNode,*LinkStack;

typedef struct

{int data[80];

int front,rear;

int num;

}C_SeQueue;

typedef struct node

{int data;

struct node *next;

}QNode;

typedef struct

{QNode *front,*rear;

}LQueue;

void menu()

{

printf("\n");

printf("\t* ☆.栈的链式存储 | ☆.栈的顺序存储 *\n");

printf("\t* 1.初始化 | 5.初始化 *\n");

printf("\t* 2.判空 | 6.判栈空 *\n");

printf("\t* 3.入栈 | 7.入栈 *\n");

printf("\t* 4.出栈 | 8.出栈 *\n");

printf("\t* ======================================== *\n");

printf("\t* ☆.队列的链式存储 | ☆.队列的顺序存储 *\n");

printf("\t* 9.初始化 | 13.建有头结点队 *\n");

printf("\t* 10.判空 | 14.判空 *\n");

printf("\t* 11.入队 | 15.入队 *\n");

printf("\t* 12.出队 | 16.出队 *\n");

printf("\t* 0,退出 | *\n");

printf("\t请选择您所需操作的序号:");

}

LinkStack Init_LinkStack()

{

StackNode *L;

L=(StackNode*)malloc(sizeof(StackNode));

L->data=100;

L->next=NULL;

return L;

}

int Empty_LinkStack(LinkStack top)

{

if(top->next==NULL) return 1;

else return 0;}

LinkStack Push_LinkStack(LinkStack top,int x)

{

StackNode *s;

s=(StackNode*)malloc(sizeof(StackNode));

s->data=x;

s->next=top->next;

top->next=s;

return top;

}

LinkStack Pop_LinkStack(LinkStack top,int *s)

{

StackNode *p;

int j=0;

p=top->next;

if(p!=NULL)

{*s=p->data;

top->next=p->next;

free(p);}

return top;

}

SeqStack * init_SeqStack()

{

SeqStack *S;

S=(SeqStack*)malloc(sizeof(SeqStack));

S->top=-1;

return S;

}

int Empty_SeqStack(S

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值