zoukankan      html  css  js  c++  java
  • 顺序表栈C语言实现

    /*
     * SeqStack.h
     *
     *  Created on: 2019年8月1日
     *      Author: Administrator
     */
    
    #ifndef SEQSTACK_H_
    #define SEQSTACK_H_
    
    
    
    //数组去模拟栈的顺序存储, 有数组的后面模拟栈顶 ,避免数据频繁移动
    #define MAX_SIZE 1024
    #define SEQ_STACK_TRUE 1
    #define SEQ_STACK_FALSE 0
    
    typedef struct SEQSTACK {
    	void *data[MAX_SIZE];
    	int size;
    } SeqStack;
    
    //栈的初始化
    SeqStack *Init_SeqStack();
    
    //入栈
    void Push_SeqStack(SeqStack *stack, void *data);
    
    //返回栈顶元素
    void *Top_SeqStack(SeqStack *stack);
    
    //出栈
    void Pop_SeqStack(SeqStack *stack);
    
    //判断是否为空
    int IsEmpty(SeqStack *stack);
    
    //返回栈中元素个数
    int Size_SeqStack(SeqStack *stack);
    
    //清空栈
    void Clear_SeqStack(SeqStack *stack);
    
    //销毁
    void FreeSpace_SeqStack(SeqStack *stack);
    
    #endif /* SEQSTACK_H_ */
    
    
    /*
     * SeqStack.c
     *
     *  Created on: 2019年8月1日
     *      Author: Administrator
     */
    
    #include "SeqStack.h"
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    
    
    //栈的初始化
    SeqStack *Init_SeqStack() {
    	SeqStack *stack = (SeqStack *)malloc(sizeof(SeqStack));
    	for(int i = 0; i < MAX_SIZE; i++){
    		stack->data[i] = NULL;
    	}
    	stack->size = 0;
    	return stack;
    }
    
    //入栈
    void Push_SeqStack(SeqStack *stack, void *data) {
    	if(stack == NULL){
    		return;
    	}
    	if(stack->size == MAX_SIZE) {
    		return;
    	}
    
    	if(data == NULL){
    		return;
    	}
    
    	stack->data[stack->size] = data;
    	stack->size++;
    
    
    }
    
    //返回栈顶元素
    void *Top_SeqStack(SeqStack *stack) {
    	if(stack == NULL){
    		return NULL;
    	}
    	if(stack->size == 0){
    		return NULL;
    	}
    	return stack->data[stack->size-1];
    }
    
    //出栈
    void Pop_SeqStack(SeqStack *stack) {
    	if(stack == NULL){
    		return;
    	}
    	if(stack->size == 0){
    		return;
    	}
    	stack->data[stack->size-1] = NULL;
    	stack->size--;
    }
    //判断是否为空
    int IsEmpty(SeqStack *stack) {
    	if(stack == NULL){
    		return -1;
    	}
    	if(stack->size == 0){
    		return SEQ_STACK_TRUE;
    	}
    
    	return SEQ_STACK_FALSE;
    }
    
    //返回栈中元素个数
    int Size_SeqStack(SeqStack *stack) {
    	return stack->size;
    }
    
    //清空栈
    void Clear_SeqStack(SeqStack *stack) {
    	if(stack == NULL){
    		return;
    	}
    	for(int i = 0;i < stack->size; i++){
    		stack->data[i] = NULL;
    	}
    	stack->size = 0;
    }
    
    void FreeSpace_SeqStack(SeqStack *stack){
    	if(stack == NULL){
    		return;
    	}
    	free(stack);
    }
    
    
    
    /*
     * main.c
     *
     *  Created on: 2019年8月1日
     *      Author: Administrator
     */
    #include "SeqStack.h"
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    
    
    typedef struct PERSON {
    	char name[64];
    	int age;
    } Person;
    
    
    int main(){
    	printf("栈  
    ");
    
    	//创建栈
    	SeqStack *stack = Init_SeqStack();
    
    	//创建数据
    	Person p1 = {"Jarvis1", 11};
    	Person p2 = {"Jarvis2", 12};
    	Person p3 = {"Jarvis3", 13};
    	Person p4 = {"Jarvis4", 14};
    	Person p5 = {"Jarvis5", 15};
    
    
    	//入栈
    	Push_SeqStack(stack, &p1);
    	Push_SeqStack(stack, &p2);
    	Push_SeqStack(stack, &p3);
    	Push_SeqStack(stack, &p4);
    	Push_SeqStack(stack, &p5);
    
    	//输出
    	while(Size_SeqStack(stack) > 0) {
    		//访问栈顶元素
    		Person *person = (Person *)Top_SeqStack(stack);
    		printf("Name: %s, Age: %d 
    ", person->name, person->age);
    		//弹出栈顶元素
    		Pop_SeqStack(stack);
    	}
    
    	//释放内存
    	FreeSpace_SeqStack(stack);
    
    	system("pause");
    	return 0;
    }
    
    
    
  • 相关阅读:
    blktrace分析IO
    Mac-配置SecureCRT
    Mac-安装itellij idea
    Mac-sublime text 3破解版
    Mac-item+zsh
    Mac-安装homebrew
    Mac-装机
    Mac-WIFI总是断网
    Git-ssh登录github
    Git-回滚操作
  • 原文地址:https://www.cnblogs.com/wjw-blog/p/11324882.html
Copyright © 2011-2022 走看看