#pragma once
#include <windows.h>
typedef struct KEEP //
{
int index;
char name[8];
KEEP* next;
}KEEP;
typedef struct STACK //
{
int size;
KEEP* top;
}STACK;
bool insert(STACK* stack, int index);//插入
bool push(STACK* stack, KEEP keep);//入棧
bool pop(STACK* stack);//出棧
int size(STACK stack);//棧的元素個數
bool empty(STACK* stack);//是否空棧
KEEP* top(STACK stack);//棧的頭部分
void clear(STACK* stack);//清楚棧
void show(STACK stack);//展示棧的內容
//////////////////////以上頭文件///////////////////////////////////////////
#define _CRT_SECURE_NO_WARNINGS
#include "list.h"
#include <stdio.h>
#include <windows.h>
#include <limits.h>
#include <time.h>
#include <math.h>
#include <iostream>
bool insert(STACK* stack, int index)
{
KEEP* one = (KEEP*)malloc(sizeof(KEEP));
one->index = index;
/*strcpy(one->name, name);*/
one->next = NULL;
push(stack,*one);
return true;
}
bool push(STACK* stack, KEEP keep)
{
KEEP* one = (KEEP*)malloc(sizeof(KEEP));
one->index = keep.index;
/*strcpy(one->name, keep.name);*/
one->next = NULL;
KEEP*p = stack->top;
if (stack->top == NULL)
{
stack->top = one;
one->next = NULL;
stack->size++;
return true;
}
else
{
one->next = p;
stack->top = one;
stack->size++;
return true;
}
}
bool pop(STACK* stack)
{
KEEP*p = stack->top;
stack->top = p->next;
free(p);
stack->size--;
return true;
}
int size(STACK stack)
{
return stack.size;
}
bool empty(STACK* stack)
{
KEEP*p = stack->top;
if (p == NULL)
{
return 0;
}
else
{
return 1;
}
}
KEEP* top(STACK stack)
{
return stack.top;
}
void clear(STACK* stack)
{
KEEP*p = stack->top;
for (p; p != NULL; )
{
KEEP*q = p;
p = p->next;
stack->top = p;
free(q);
stack->size--;
}
}
void show(STACK stack)
{
KEEP*p = stack.top;
for (p; p != NULL; p = p->next)
{
printf(" %d\n", p->index);
}
}
void main()
{
STACK stack = { 0 };
//想要實現的內容直接調用函數即可
}
棧
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.