先建立一個結構體節點:
typedef struct Node{
int member;
struct Node *pNext;
}Node,*pNode;
創建一個棧:
typedef struct stack{
pNode Top;
pNode Bot;
}Stack,*pStack;
//初始話棧內部
void Init_stack(pStack ps)
{
ps->Top= (pNode)malloc(sizeof(Node));
if (NULL == ps->Top)
exit(-1);
ps->Bot = ps->Top;
ps->top->pNext = NULL;
}
//進棧操作
int Instack(pStack ps ,int data)
{
pNode pNew = (pNode)malloc (sizeof(Node));
pNew->member = data;
pNew->pNext = ps->Top;
ps->Top = pNew; //可以把它想象成一個書盒,然后你一本書一本書的朝里面放書
}
//出棧操作
//出棧操作需要釋放空間
int Exit_Stack(pStack ps)
{
int m;
pNode pDel =(pNode)malloc(sizeof(Node));
pDel->member = ps->Top ->member ;
m = pDel->member
if (ps->Top == ps->Bot)
exit(-1);
pDel = ps->Top ;
ps->Top = ps->Top->pNext;
free(pDel);
return m;
}
//棧的遍歷
int Tracestack(pStack ps)
{
if (ps->Top == ps->Bot)
exit(-1);
while (NULL != ps->Top->Next )
{
printf(“ps->Top->member=%d",ps->Top->member);
ps->Top = ps->Top->pNext;
}
return 0;
}//也可以用棧底不等於棧頂的方式來循環