數據結構--棧總結

順序棧

#include <stdio.h>
#include <stdlib.h>

//元素入棧
int push(int*a ,int top,int data)
{
	a[++top] = data;
	return top;
}

//元素出棧
int pop(int* a, int top)
{
	if (top == -1)
	{
		return -1;
	}
	printf("彈出元素%d\n ", a[top]);
	top--;
	return top;
}
int main()
{
	int a[100];
	int top = -1;
	top = push(a, top,1);
	top = push(a, top, 2);
	top = push(a, top, 3);
	top = push(a, top, 4);

	top = pop(a, top);
	system("pause");
	return 0;
}

鏈式棧

#include <stdio.h>
#include <stdlib.h>

typedef struct lineStack
{
	int data;
	struct lineStack* next;
}lineStack;

lineStack* push(lineStack* stack, int num)
{
	//創建存儲新元素的節點
	lineStack* line = (lineStack*)malloc(sizeof(lineStack));
	line->data = num;
	//新節點與頭結點建立關係
	line->next = stack;
	stack = line;
	return stack;
}

//鏈表元素出棧
lineStack* pop(lineStack* stack)
{
	if (stack)
	{
		//聲明一個新指針指向棧頂節點
		lineStack* p = stack;
		stack = stack->next;
		printf("出棧元素:%d ", p->data);
		if (stack)
		{
			printf("新棧頂元素:%d\n", stack->data);
		}
		else
		{
			printf("棧已空\n");
		}
		free(p);
	}
	else
	{
		printf("棧內沒有元素");
		return stack;
	}
	return stack;
	
}
int main()
{
	lineStack* stack = NULL;
	stack = push(stack, 1);
	stack = push(stack, 2);
	stack = push(stack, 3);
	stack = push(stack, 4);
	stack = pop(stack);
	stack = pop(stack);
	stack = pop(stack);
	stack = pop(stack);
	stack = pop(stack);
	system("pause");
	return 0;
}

 

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