数据结构——栈之顺序存储

数据结构——栈之顺序存储

        栈的顺序存储可以用数组描述,增加一个变量top存储栈顶元素在数组中的下标,下面是基本操作的实现代码:
#include 
#include 
#include 
#include 
/**栈的顺序存储**/
#define Max_Size 100
typedef struct Data{
	char name[10];
	int age;
};
typedef struct{
	Data data[Max_Size];
	int top;	//存储栈顶元素在数组中的下标
}Stack;
/**初始化空栈**/
void InitStack(Stack *S){
	S->top = 0;
}
/**判断是否为空栈**/
int StackEmpty(Stack S){
	//为空返回1否则返回0
	if(S.top==0) return 1;
	else return 0;
}
/**返回栈顶元素**/
void GetTop(Stack S,Data *d){
	if(StackEmpty(S)==1)
		printf("It's an empty stack!");
	else{
		Data data = S.data[S.top-1];
		strcpy(d->name,data.name);
		d->age = data.age;
	}
}
/**向栈顶插入新元素 入栈**/
void PushStack(Stack *S,Data d){
	int top = S->top;
	if(topdata[top].name,d.name);
		S->data[top].age = d.age;
		S->top++;
	}else{
		printf("Error!It's a full stack!\n");
	}
}
/**从栈顶删除元素 出栈**/
void PopStack(Stack *S,Data *d){
	if(StackEmpty(*S)==1){
		printf("It's an empty stack!\n");
	}else{
		strcpy(d->name,S->data[S->top-1].name);
		d->age = S->data[S->top-1].age;
		S->top--;
	}
}
/**清空栈**/
void ClearStack(Stack *S){
	if(StackEmpty(*S)==1){
		printf("It's already an empty stack!\n");
	}else{
		S->top = 0;
	}
}
/**打印栈内信息**/
void PrintStack(Stack S){
	if(StackEmpty(S)==1){
		printf("It's an empty stack!\n");
	}else{
		printf("name----age\n");
		int len = S.top;
		for(int i =0;i

你可能感兴趣的:(数据结构与算法)