C语言完整程序,题目:给定一个栈S,编写一个函数求此栈的元素个数(用非递归实现)
staitic noss(&s)
{ int c=0;
while(s.top!=s.base) { c++; pop(s);}
return c; }
//刚刚楼主发来求助短信……
#include<stdio.h>
#define SIZE 1024
static struct istk /*将栈s定义为istk结构体*/
{
int top;
int base;
int stack[SIZE];
} s={SIZE,SIZE}; /*初始化为空栈*/
static void push(int data) /*压栈*/
{ /*为了不冲淡主题,略去栈满测试*/
s.stack[--s.top]=data;
}
static int pop(struct istk *sp) /*弹栈*/
{ /*为了不冲淡主题,略去栈空测试*/
return sp->stack[sp->top++];
}
static int noss(struct istk *s)
{ int c=0;
while(s->top!=s->base) { c++; pop(s);}
return c;
}
main()
{
int i,data[12]={23,34,-30,12,-987,789,123,1,0,0,90,78};
for(i=0;i<12;i++)push(data[i]); /*共压入12个数据*/
printf("there\'re %d data in the stack\n",noss(&s));
}
[此贴子已经被作者于2006-5-28 9:41:44编辑过]