C鏈棧

鏈棧的實質還是鏈表,對於一般的鏈表創建從後插入,鏈棧是將鏈表從前插入。

0 插入1 爲1 0 ,再插入2 爲 2 1 0。

鏈棧的彈出也遵循棧的約定先入後出

看下面示例

#include "stdafx.h"
#include <stdlib.h>
#include <string.h>

typedef struct LinkStack
{
	int data;
	LinkStack* pNext;
}LinkStack;

LinkStack* PushStack()
{
	LinkStack* pHead = (LinkStack*)malloc(sizeof(LinkStack));
	memset(pHead,0,sizeof(LinkStack));
	while(1)
	{
		LinkStack* pNewItem = (LinkStack*)malloc(sizeof(LinkStack));
		memset(pNewItem,0,sizeof(LinkStack));
		printf("input data: ");
		scanf("%d",&pNewItem->data);
		if(pNewItem->data == 0)
			break;
		pNewItem->pNext = pHead;
		pHead = pNewItem;
		printf(" %d pushed\n",pNewItem->data);
	}

	return pHead;
}

void ShowStack(LinkStack* pHead)
{
	printf("--------------------------------\n");
	LinkStack* pTemp = pHead;
	while(pTemp->pNext != NULL)
	{
		printf("%d  ",pTemp->data);
		pTemp = pTemp->pNext;
	}
	printf("\n");
}

LinkStack* PopStack(LinkStack* pHead)
{
	int *item = NULL;
	while(pHead->pNext != NULL)
	{
		item = &pHead->data;
		pHead = pHead->pNext;
		printf("%d poped\n",*item);
	}
	return pHead;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章