下面是一个栈的算法
#include
#include
typedef struct Node{
int iData;
struct Node* pNext;
}Node;
void push(Node** pTop, int iData)
{
Node* pNew = (Node*)malloc(sizeof(Node));
pNew->pNext = NULL;
pNew->iData = iData;
if (NULL == (*pTop)){
(*pTop) = pNew;
}else{
pNew->pNext = (*pTop);
(*pTop) = pNew;
}
}
void pop(Node** pTop)
{
Node *pDel=NULL;
if (NULL == (*pTop)){
printf("Empyt stack!\n");
}else{
printf("stack value: %d\n", ((*pTop))->iData);
pDel = (*pTop);
(*pTop) = (*pTop)->pNext;
}
}
void print_stack(Node* pTop)
{
Node* p = pTop;
while(p){
printf("print_stack:%d\n",p->iData);
p = p->pNext;
}
}
int main()
{
Node* pTop = NULL;
int i,ii;
for (i=1; i<10; i++)
{
push(&pTop, i);
}
print_stack(pTop);
for (ii=1; ii<10; ii++)
{
pop(&pTop);
}
return 0;
}