栈的多种C语言实现(2)

C++中的引用某种程度上,可以用C的指针替代。

# include <stdio.h>
# define M 100
typedef struct stack {
 int top;
 int key[M];
} stack;
int stackEmpty(stack s);
void push(stack & s, int x);
int pop(stack & s);
int main(void)
{
 stack s;
 s.top = 0;
 /* 测试代码 */
 push(s, 2);
 push(s, 3);
 printf("pop - %d\n", pop(s));
 printf("stackEmpty - %d", stackEmpty(s));
}
int stackEmpty(stack s)
{
 if(s.top == 0) {
  return 1;
 } else {
  return 0;
 }
}
void push(stack & s, int x)
{
 s.top += 1;
 s.key[s.top] = x;
}
int pop(stack & s)
{
 if(s.top == 0) {
  return -1;
 } else {
  s.top--;
  return s.key[s.top + 1];
 }
}

全局变量实现

注意:全局变量传递参数的时候就不要传递了。

全局变量可以一直保存变量的值,不会因某个函数的结束而销毁,并且不用作为参数传递给函数。

# include <stdio.h>
# define M 100
typedef struct stack {
 int top;
 int key[M];
} stack;
stack s;
int stackEmpty(void);
void push(int x);
int pop(void);
int main(void)
{
 s.top = 0;
 /* 测试代码 */
 push(2);
 push(3);
 printf("pop - %d\n", pop());
 printf("stackEmpty - %d", stackEmpty());
}
int stackEmpty(void)
{
 if(s.top == 0) {
  return 1;
 } else {
  return 0;
 }
}
void push(int x)
{
 s.top += 1;
 s.key[s.top] = x;
}
int pop(void)
{
 if(s.top == 0) {
  return -1;
 } else {
  s.top--;
  return s.key[s.top + 1];
 }
}

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/737c644c88da765f35dc1b6aee40b6eb.html