栈的基本操作的实现(c语言),高手速来!!
发布网友
发布时间:2022-04-20 04:34
我来回答
共1个回答
热心网友
时间:2023-08-10 23:35
/*程序错误太多*/ #include"stdio.h"
#include"stdlib.h"
#include"time.h"
#include"malloc.h"
#define
STACK_INIT_SIZE
10
//栈容量 typedef
struct
SqStack
{
int
top;
//栈顶当前指针
int
*base;
//栈空间数组
}SqStack; void
InitStack(SqStack
&S);
//构造空栈S
int
Push(SqStack
&S,int
e);
//入栈(栈地址,入栈数据)
返回0对,-1错
int
Pop(SqStack
&S);
//出栈
(栈地址)返回栈顶数据
int
StackLength(SqStack
S);
//返回站的元素个数,即求栈长
void
Print_S(SqStack
S);
//显示栈内数据 int
main()
{
SqStack
S;
int
i=0;
int
a,e;
InitStack(S);
srand((unsigned)time(NULL));
//srand((unsigned)time(NULL))以time函数值(当前时间)作为种子
printf("随机填充5个元素为:
");
while(
i<5)
{
a
=
rand()%100;
printf("%d
",
a);
Push(S,a);
i++;
}
Print_S(S);
printf("请输入要插入栈顶的元素:");
scanf("%d",&e);
Push(S,e);
Print_S(S);
printf("再弹出的栈顶元素为:%d
\n",Pop(S));
printf("栈的长度为:%d
\n",StackLength(S));
Print_S(S);
return
0;
} void
InitStack(SqStack
&S)
//构造空栈S
{
S.base
=
(int
*)malloc(STACK_INIT_SIZE
*
sizeof(int));
//分配组数空间,长度STACK_INIT_SIZE
if
(S.base==NULL)
{
printf("内存分配失败!\n");
return;
}
S.top=-1;
} int
Push(SqStack
&S,int
e)
{
if(S.top>=STACK_INIT_SIZE)
{
printf("栈空间已满,入栈失败!\n");
return
-1;
}
else
{
S.base[++S.top]=e;
return
0;
}
} int
Pop(SqStack
&S)
//返回栈顶数据
{
if
(S.top>=0)
//栈内有数据
{
return
S.base[S.top--];
}
else
{
printf("空栈,无数据弹出!\n");
return
-1;
}
} int
StackLength(SqStack
S)
{
return
S.top+1;
} void
Print_S(SqStack
S)
{
printf("\n出栈显示:");
if(S.top
==
-1)
printf("栈内无数据!\n");
else
{
while(S.top>=0
)
printf("%d
",Pop(S));
putchar('\n');
}
}
急!用c语言实现链栈的操作
⑷出栈/*删除链栈top的栈顶结点*/ int PopLinkStack (LinkStack* & s, ElemType &x){ LinkStack *p;if(s==NULL) return 0;x = s->data; /*将栈顶数据存入*x */ p = s; /*保存栈顶结点地址*/ s = s->next; /*删除原栈顶结点*/ free (p); /*释放原栈顶结点*/ return ...
利用栈的基本操作实现将任意一个十进制整数转化为R进制整数
//思路:将十进制数(number)除以R取余,让取得的余数(number Mod R )进栈,让十进制数变为 number/R,重复上述过程,直到number等于0为止,然后依次从栈中取出数据即为所求,直到栈为空,下面是实现的代码:include<stdio.h> include<stdlib.h> define MAX_SIZE 80 typedef struct {//栈的数据结...
用C语言编写函数实现顺序栈的进栈、退栈、取栈顶的算法。
initstack(s); //想初始化定义好的栈 //当栈为空时调用出栈操作 pop(s);//向栈中添加一个元素a push(s,'a');//观察此时的栈顶元素 x=gettop(s);printf("%c\n",x);//再添加一个元素b push(s,'b');//观察此时的栈顶元素 x=gettop(s);printf("%c\n",x);//弹出栈顶的...
数据结构定义一个栈并实现入栈和出栈操作的程序c语言完整版
常用数据结构:数组 (Array)、栈 (Stack)、队列 (Queue)、链表 (Linked List)、树 (Tree)、图 (Graph)、堆 (Heap)、散列表 (Hash)
一、 栈的基本操作 实验目的:了解栈逻辑结构的特点,掌握栈的基本操作...
} Stack popstack(Stack S){ if(S.top==S.base)exit(1);--S.top;return S;} int main(){ int i;Stack S;init(&S);scanf("%d",&i);S=pushstack(S,i);printf("%d\n",*(S.top-1));S=popstack(S);if(S.top==S.base)printf("栈为空");system("pause");return 0;} ...
用c语言编顺序栈 自己输入数字 越简单越好 开头 #include<studio.h>...
} break;case 4:if(top <0){ printf("栈为空\n");}else{ printf("栈未空\n");} break;default:printf("请输入有效选择\n");break;} } } 这个就是顺序栈的简单操作,把所有的实现操作都放在主函数实现是个不好的编程习惯,要试着锻炼自己的函数设计能力(先把栈理解了,再学链表)。
一个关于栈的C语言代码。麻烦高手指点一下。刚学习,新手。求教。谢谢了...
define MAXNUM 100 struct Stack{ int a;double b;char c;};struct Stack stack[MAXNUM];int top=-1;define pop stack[top--]define push(s) stack[++top]=s
关于C语言的顺序栈的操作
int top;//栈顶 }Stack;//循环队列的结构定义 typedef struct { int elem[N];int front;int rear;}Queue;int Greatstack(Stack*);int GreatQueue(Queue *);int pop(Stack *s);void show(Stack *s);int push(Stack *s);int popStack(Stack *s);int enQueue(Queue *q);int deQueue(...
请问C语言实现栈的顺序存储结构程序怎么写,最好是编译过得,谢谢
void mPush(int x) { if ( top-bottom<=STACKSIZE ) { mstack[top]=x; top++; } } int mPop() { int r=0; if ( top>bottom ) { r=mstack[top]; top--; } return r; } void main(){ int i,n,x;char buffer[80];mInitStack();for ( i=0;i<10;i++ ) { scanf("...
链栈(C语言)
链栈:C语言实现的栈式数据结构探索今天,我们将深入探讨C语言中的链栈,一种基于链表实现的栈结构。它虽然看似与单链表相似,但操作上却有着独特的限制——只能在栈顶进行插入和删除操作。让我们先来看看链栈的核心存储结构:typedef int SElemType;typedef struct node { SElemType data; // 数据...