数据结构---堆栈
#include<stdio.h>
#include<stdlib.h>
#define MAX 1000
void myPush(int *stack,int *ptr,int data)
{
stack[++(*ptr)]=data;//如果写成stack[(*ptr)++]=data错误
}
int readMyStack(int *stack,int *ptr)
{
return stack[*ptr];
}
void myPop(int *ptr)
{
(*ptr)--;
}
int main()
{
int mystack[MAX];
int pointer=-1,i;
myPush(mystack,&pointer,11);
myPush(mystack,&pointer,10);
myPush(mystack,&pointer,9);
i=readMyStack(mystack,&pointer);
printf("%d\n",i);
myPop(&pointer);
i=readMyStack(mystack,&pointer);
printf("%d\n",i);
}
以上为为用数组模拟的传pointer地址的
注意:myStack为指向int值的指针,函数传参,int *stack,stack也为指向int值的指针,向函数传递数组信息,stack[]直接操作数组
/*传pointer值*/
#include<stdio.h>
#include<stdlib.h>
#define MAX 1000
int myPush(int *stack,int ptr,int data)
{
stack[++(ptr)]=data;
return ptr;
}
int readMyStack(int *stack,int ptr)
{
return stack[ptr];
}
int myPop(int ptr)
{
return (--ptr);
}
int main()
{
int mystack[MAX];
int pointer=-1,i;
pointer=myPush(mystack,pointer,11);
pointer=myPush(mystack,pointer,10);
pointer=myPush(mystack,pointer,9);
i=readMyStack(mystack,pointer);
printf("%d\n",i);
pointer=myPop(pointer);
i=readMyStack(mystack,pointer);
printf("%d\n",i);
}
以上为用传值的方式
/*传结构*/
#include<stdio.h>
#include<stdlib.h>
#define MAX 1000
struct myStack{
int pointer;
int stack[MAX];
};
void myPush(struct myStack *s,int ptr,int data)
{
s->pointer++;
s->stack[s->pointer]=data;
}
int readMyStack(struct myStack *s,int ptr)
{
return s->stack[s->pointer];
}
int myPop(int ptr)
{
return (--ptr);
}
int main()
{
int i;
struct myStack s1;
s1.pointer=-1;
myPush(&s1,s1.pointer,11);
myPush(&s1,s1.pointer,10);
myPush(&s1,s1.pointer,9);
i=readMyStack(&s1,s1.pointer);
printf("%d\n",i);
s1.pointer=myPop(s1.pointer);
i=readMyStack(&s1,s1.pointer);
printf("%d\n",i);
}
以上为传结构指针的方式

浙公网安备 33010602011771号