數據結構之進棧出棧操作


先建立一個結構體節點:

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;

}//也可以用棧底不等於棧頂的方式來循環

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM