急!用C语言编写个使用栈的程序,简单点的,包含入栈,出栈等几个基本 *** 作就行。

急!用C语言编写个使用栈的程序,简单点的,包含入栈,出栈等几个基本 *** 作就行。,第1张

就用这堆启乎函数就可以了,不懂再追问

#include <string.h>

#define MaxSize 100

int mystack[MaxSize]/* 第0个单晌首元保存现在的长度 */

/* 初始化函数 */

void init_stack(int* stack){

memset(stack,0,sizeof(stack))

}

/* 入栈函数 */

void push_back(int* stack,int&num){

if(stack[0]<MaxSize-1){

++stack[0]

stack[ stack[0] ] = num

}

else{

printf("ERORR!\n")

}

}

/* 返回栈空间 */

int size(int* stack){

return stack[0]

}

/* 返回栈顶函数悄谨悉 */

int top(int* stack){

if(stack[0]>0){

return stack[ stack[0] ]

}

else{

printf("ERORR!\n")

return -1

}

}

/* 出栈函数 */

void pop(int* stack){

if(stack[0]>0){

--stack[0]

}

else{

printf("ERORR!\n")

}

}

#include<stdlib.h>

typedef struct node

{

int num

struct node *next

}*link,LINK

void empty(link top)

{

top=NULL

}

int pd(link top)

{

if(top==NULL)

{

return 0

}

else

{

return 1

}

}

link create(link top,int n)

{

link s

s=(link)malloc(sizeof(LINK))//分配时要分配一个结构体的空间,而不是仅仅一个指针的空间。

s->num=n

s->next=top

top=s

return top

}

/*如上个函数,要返回蚂让一个指针,否则是不能改变top的值的。因为在函数中只能修改指针指向地址的内容,而它指向的地址是不会改变的。因此要想使指针指向的地址发生变化,要重新返回一个link。出栈的数据放到x中。*/

link outword(link top,int *x)

{

link p

if(pd(top)==0)

{

printf("underflow")

return top

}

else

{

p=top

*x=top->num

top=top->next

free(p)

return top

}

}

void main()

{

link top=NULL

int n,*x=(int*)malloc(sizeof(int))

//top=(link)malloc(sizeof(LINK))

//empty(top)

printf("进栈\n")

scanf("%d",&n)

//top->num=n

while(n!=-1)

{

top=create(top,n)

scanf("%d",&n)

}

printf("出栈\n")

while(pd(top)!=NULL)

{

top=outword(top,x)

printf("%d\n",*x)

}

}

已经可以运行。主要问题就是出栈函数的问题,需御物镇要你仔细考虑一下镇粗。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12504859.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存