c语言stack函数用法 stack函数C语言

请问c语言有没有像c++一样的stack库函数?用来直接使用栈

C语言中包含一些标准的库函数,但是没有像C++中的STL容器那部分全面的结构和函数。

创新互联建站专注于连山网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供连山营销型网站建设,连山网站制作、连山网页设计、连山网站官网定制、重庆小程序开发公司服务,打造连山网络公司原创品牌,更为您提供连山网站排名全网营销落地服务。

在C语言中如果想使用栈,需要自己编写代码,如果是简单的一次性应用,可以用数组模拟栈的功能,如果是在一个大项目中反复使用,可以自己写一个stack的库函数。

自定义的库函数中,至少应该包含初始化、销毁、入栈、出栈、取栈顶元素、判断栈是否为空等操作。

C语言中堆栈问题

我帮你写了InitStack和StackEmpty函数,程序最终结果如下:

#define maxnum 20

#includestdio.h

#includestdlib.h

struct stacktype

{

int stack[maxnum];

int top;

};

struct stacktype *S;//顶一个堆栈

int push(struct stacktype *s,int x)

{

if(s-top=maxnum-1)

return false;

else

s-top++;

s-stack[s-top]=x;

return true;

}

int pop(struct stacktype *s)

{

if(s-top 0)

return NULL;

else

s-top--;

return(s-stack[s-top+1]);

}

//初始化堆栈

void InitStack(struct stacktype* S)

{

S = (struct stacktype *)malloc(sizeof(struct stacktype));

S-top = -1;

}

//判断堆栈是否为空

bool StackEmpty(struct stacktype *S)

{

if (S-top 0)

{

return true;

}

return false;

}

void dec_to_bin(int n,int b)

{

int e;

InitStack(S);//请问初始化堆栈函数怎么写?

if (S ==NULL)

{

printf("error \n");

return;

}

while(n)

{

push(S,n%b);

n=n/b;

}

while(!StackEmpty(S))//判断栈为空的函数怎么写?

{

e=pop(S);

printf("%d",e);

}

}

void main()

{

dec_to_bin(13,2);

printf("\n");

}

程序运行结果为:

1101

栈的基本操作的实现(c语言),高手速来!!

/*程序错误太多*/ #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(

i5)

{

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语言中用stack pop() top 等与栈有关的函数需要什么头文件啊???

1、C语言标准库当中没有与stack栈相关的标准类。

2、可以自定义这个头文件,例如:

struct Stack

{

int mData[100];

int mLen;

};

//初始化栈

void InitStack(Stack S)

{

S.mLen = 0;

}

//元素进栈

void Push(Stack S,int item)

{

S.mData[S.mLen++] = item;

}

//删除栈顶元素

int Pop(Stack S)

{

S.mLen--;

return S.mData[S.mLen];

}

//返回栈顶元素

int  Peek(Stack S)

{

return S.mData[S.mLen-1];

}

//判断栈是否为空

bool EmptyStack(Stack S)

{

if(S.mLen == 0) return true;

return false;

}

//清空栈

void Clear(Stack S)

{

for(int i = 0;iS.mLen;++i)

{

Pop(S);

}

}


本文名称:c语言stack函数用法 stack函数C语言
本文网址:http://scjbc.cn/article/doceeod.html

其他资讯