數組、棧、隊列的相互實現(c++)

數組結構實現固定大小的棧和隊列

數組實現固定大小棧

#include <iostream>
using namespace std;
int index = 0;     //stack指針
void push(int* a,int num,int i)
{
	if (index >= i)
		cout << "zhanding yichu" << endl;
	a[index++] = num;
}
int pop(int* a, int i)
{
	int pop;
	if (index == 0)
		cout << "zhandi wei0" << endl;
	pop = a[--index];
		return pop;
}

int read(int* a, int i)
{
	int pop;
	if (index == 0)
		cout << "zhandi wei0" << endl;
	pop = a[index-1];
	return pop;
}
void newstack(int* a, int i) //i開闢多大數組
{
	if (a == nullptr || i < 0)
		return;
	push(a, 1, i);
	push(a, 2, i);
	int res = pop(a, i);
	push(a, 3, i);
	int res1 = read(a, i);
	int res2 = read(a, i);
	int res3 = pop(a, i);	
	int res4 = pop(a, i);
	cout << res  << endl;
	cout << res1 << endl;
	cout << res2 << endl;
	cout << res3 << endl;
	cout << res4 << endl;

}
int main()
{
	int a[100] = { 0 };
	newstack(a, 3);
	system("pause");
	return 0;
}

數組實現固定大小隊列

#include <iostream>
using namespace std;
int start = 0;
int end1 = 0;
int realsize = 0;
void push(int* a,int num,int initsize)
{
	if (realsize >= initsize)
		return;
	a[end1] = num;
	end1 = end1 == initsize - 1 ? 0 : end1 + 1;
	realsize++;
}
int poll(int* a,int initsize)
{
	if (realsize == 0)
		cout << "error" << endl;
	realsize--;
	int temp = start;
	start = start == initsize - 1 ? 0 : start + 1;
	return a[temp];
}
void queue(int* a,int initsize)
{
	push(a, 1, initsize);
	push(a, 2, initsize);
	int res = poll(a, initsize);
	int res1 = poll(a, initsize);
	cout << res << endl;
	cout << res1 << endl;
}
int main()
{
	int a[100] = { 0 };
	queue(a, 3);
	system("pause");
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章