C语言实现栈(插入,删除) |
您所在的位置:网站首页 › 删除函数c语言怎么操作视频 › C语言实现栈(插入,删除) |
#include #include #include #include #define STACKSIZE 10 #define TRUE 1 #define FALSE 0 typedef struct Stack { int *data; int top; int stacksize; }Stack,*StackPtr;//初始化 int Init_SqStack(StackPtr Stack) { assert(Stack != NULL); if (Stack == NULL) { printf("Stack is null\n"); } Stack->data = (int *)malloc(sizeof(STACKSIZE)); if (Stack->data == NULL) { printf("stack is filure\n"); } Stack->top = 0; Stack->stacksize = STACKSIZE; return TRUE; }//判满 int Full_SqStack(StackPtr Stack) { if (Stack->data == NULL || Stack->stacksize == STACKSIZE) { return TRUE; } else { return FALSE; } }//扩展 int Append_SqStack(StackPtr Stack) { if (Stack->top == Stack->stacksize) { exit(0); } int* data = (int*)malloc(sizeof(int)*STACKSIZE * 2); if (data == NULL) { printf("data is filure\n"); } for (int i = 0; i < Stack->stacksize; i++) { data[i] = Stack->data[i]; } free(Stack->data); Stack->data = data; Stack->stacksize *= 2; return TRUE; }//入栈 int Push_SqStack(StackPtr Stack, int val) { assert(Stack != NULL); if (Stack == NULL) { printf("Stack is null\n"); } if (Full_SqStack(Stack) && !Append_SqStack(Stack)) { printf("Insert is error\n"); } Stack->data[Stack->top++] = val; return TRUE; }//出栈 void Pop_SqStack(StackPtr Stack) { assert(Stack != NULL); if (Stack == NULL) { printf("Stack is null\n"); } Stack->top--; } //得到栈顶元素 int Get_Head_SqStack(StackPtr Stack, int* val) { assert(Stack != NULL); *val = Stack->data[Stack->top-1]; return *val; }//清空 void Clear(StackPtr Stack) { assert(Stack != NULL); if (Stack == NULL) { printf("Stack is null\n"); } Stack->top = 0; }//摧毁 void Destroy(StackPtr Stack) { assert(Stack != NULL); if (Stack == NULL) { printf("Stack is null\n"); } Stack->top = 0; Stack->stacksize = 0; }//得到栈的长度 int Length_SqStack(StackPtr Stack) { assert(Stack != NULL); int count = 0; while (Stack->top >= 0) { count++; Stack->top--; } return count; }//打印栈 void Show(StackPtr Stack) { assert(Stack != NULL); if (Stack == NULL) { printf("Stack is null\n"); } for (int i = 0; i < Stack->top; i++) { printf(" %4d",Stack->data[i]); } printf("\n"); } int main() { Stack stack; Init_SqStack(&stack); if (!Init_SqStack(&stack)) { printf("init is error\n"); } for (int i = 0; i < 10; i++) { Push_SqStack(&stack, i); } Show(&stack); printf("%4d\n",Get_Head_SqStack(&stack,&stack.top)); Push_SqStack(&stack, 100); Push_SqStack(&stack, 200); Push_SqStack(&stack, 300); Show(&stack); Pop_SqStack(&stack); Show(&stack); printf("%4d\n",Length_SqStack(&stack)); return 0; } |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |