數據結構2.1——棧

棧(stack)是限定僅在表尾進行插入或者刪除的線性表,表尾端稱爲棧頂(top),表頭端稱爲棧底(bottom)。棧有時又叫做先進後出的線性表,棧的基本操作有進棧(push)和出棧(pop),前者相當於插入,而後者則是刪除最後插入的元素。如圖


棧有兩種存儲方法:一種使用數組,另一種是使用單鏈表。

棧的順序表示

typedef struct stack
{
	int top;
	int data[MAXSIZE];
}stack;


top用來指定棧頂元素在數組中的位置,棧存儲的數據大小爲MAXSIZE


順序棧的進棧出棧

void push(stack *s,int e)
{
	if(s->top==MAXSIZE-1)
		return ;
	s->top++;
	s->data[s->top]=e;
	return ;
}

void pop(stack *s,int *e)
{
	if((s->top)==-1)
		return;
	*e = s->data[s->top];
	s->top--;
	return;
}

棧的單鏈表實現

鏈棧是沒有附加頭結點的運算受限的單鏈表,棧頂指針就是鏈表的頭指針。



鏈棧的實現

typedef struct stackNode
{
	int  data;
	struct  stackNode *next;
}stackNode, *stackList;


鏈棧的進棧出棧

void push(stackList s,int e)
{
	stackList tmp;
	tmp  =(stackList)malloc(sizeof(stackNode));
	if(tmp==NULL)
		printf("Out of space");
	else
	{
	    tmp->data =e;
	    tmp->next=s->next;
	    s->next=tmp;
	}
	return ;
}

void pop(stackList s)
{
	stackList tmp;
	if(s->next==NULL)
		return;
	else
		{
			tmp=s->next;
			s->next=s->next->next;
			free(tmp);
		}
}





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