堆栈(逆波兰)
来源:互联网 发布:怎么查看淘宝注册日期 编辑:程序博客网 时间:2024/05/21 10:21
#define _CRT_SECURE_NO_WARNINGS#pragma once#include <cstdlib>#include <cstring>#include <cstdio>typedef struct _ELEMENT{ int index; char name[8]; _ELEMENT* next;}ELEMENT;typedef struct _STACK{ int size; ELEMENT* top;}STACK;//入栈bool push(STACK* stack, ELEMENT element);//出栈bool pop(STACK* stack);//ELEMENT* _pop(STACK* stack);//元素数int size(STACK stack);//是否空栈bool empty(STACK* stack);//去头节点ELEMENT* top(STACK stack);//清空void clear(STACK stack);//打印void show(STACK stack);
#include "Stack.h"bool push(STACK* stack,ELEMENT element) { ELEMENT* node = (ELEMENT*)malloc(sizeof(ELEMENT)); memset(node,0,sizeof(ELEMENT)); node->index = element.index; strcpy(node->name, element.name); if (stack->top == NULL) { stack->top = node; node->next = NULL; return true; } else { node->next=stack->top; stack->top = node; return true; }}bool pop(STACK* stack){ if (stack->top == NULL) { return true; } else { ELEMENT* p = NULL; p = stack->top; stack->top = stack->top->next; //free(p); } return false;}int size(STACK stack){ for (ELEMENT* p = stack.top;p!=NULL; p=p->next) { stack.size++; } printf("%d",stack.size); return stack.size;}bool empty(STACK* stack){ if (stack->top == NULL) { printf("no\n"); return true; } else { printf(" yes\n"); return true; } return false;}ELEMENT* top(STACK stack){ return stack.top;}void clear(STACK stack){ for (ELEMENT* p=stack.top;p!=NULL;p= stack.top) { stack.top = p->next; free(p); } printf("%d", stack.top); return;}void show(STACK stack){ for (ELEMENT*p = stack.top; p != NULL;p = p->next) { printf("%d %s\n",p->index,p->name); } return;}//ELEMENT* _pop(STACK* stack) //{// ELEMENT* p = stack->top;// if (p != NULL)// {// stack->top = stack->top->next;// stack->size--;// return p;// }// return NULL;//}
#include "Stack.h"//void main()//{ //STACK stack = { 0 }; //ELEMENT element = { 0 }; //strcpy(element.name, "张三"); //element.index = 5; //ELEMENT element1 = { 0 }; //element1.index = 6; //strcpy(element1.name, "李四 "); //ELEMENT element2 = { 0 }; //strcpy(element2.name, "王五"); //element2.index = 3; //push(&stack, element); //push(&stack, element1); //push(&stack, element2); ////size(stack); ////pop(&stack); ////empty(&stack); ////top(stack); //show(stack); //clear(stack); //getchar();//}//字符串的截取void interce(ELEMENT* element){ char src[] = { 0 }; char str[32] = { 0 }; char buffer[32] = { 0 }; gets_s(src); char* p = strstr(src, ","); if (p != NULL) { int len = p - src; memcpy(str, src, len); memcpy(buffer, p + 1, strlen(str) - len - 1); strcpy(buffer, p + 1); }}void main(){ STACK stack = { 0 }; ELEMENT element = { 0 }; char arr[20] = { 0 }; strcpy(element.name, arr); gets_s(arr); if (arr[0] < '/' && arr[0] < ':') { } strcpy(element.name, "arr"); element.index = atoi(arr); push(&stack, element); show(stack); getchar();}//#define SHOW(f) \//ELEMENT* p = _pop(stack); \//ELEMENT* q = _pop(stack); \//if (p == NULL){printf("表达式错误\n");return;}\//if (q == NULL){printf("表达式错误\n");return;}\//element.index = p->index ##f q->index; \//printf("%d %s %d = %d\n", p->index, #f, q->index, element.index); \//push(stack, element);//void fun(STACK* stack, ELEMENT element, char* arrs)//{// if (strrchr(arrs, ' ') == NULL) // {// element.index = atoi(arrs);// push(stack, element);// return;// }// char* a = strrchr(arrs, ' ') + 1;// if (strcmp(a, "+") == 0 || strcmp(a, "-") == 0 || strcmp(a, "*") == 0 || strcmp(a, "/") == 0) {//// }// else {// element.index = atoi(strrchr(arrs, ' ') + 1);// }// memset(strrchr(arrs, ' '), 0, 1);// fun(stack, element, arrs);// switch (*a)// {// case '+':// {// SHOW(+);// break;// }// case '-':// {// SHOW(-);// break;// }// case '*':// {// SHOW(*);// break;// }// case '/':// {// SHOW(/ );// break;// }// default:// push(stack, element);// break;// }//}//#undef SHOW;//void main() {//// /*ELEMENT elements1 = { 0 };// elements1.index = 1;// strcpy(elements1.name, "李四");//// ELEMENT elements2 = { 0 };// elements2.index = 1;// strcpy(elements2.name, "王五");//// push(&stack,elements);// push(&stack, elements1);// push(&stack, elements2);// pop(&stack);// pop(&stack);//// show(stack);*///// STACK stack = { 0 };// ELEMENT elements = { 0 };// strcpy(elements.name, " ");//// char arrs[128] = { 0 };// gets_s(arrs);// //printf("%s\n",arrs);// //printf("%s\n", arrs);// //printf("%c\n",atoi("+"));//// fun(&stack, elements, arrs);// show(stack);//// getchar();//}
阅读全文
0 0
- 堆栈(逆波兰)
- 使用堆栈思路 实现逆波兰表达式
- 关于Java写逆波兰表达式堆栈操作简单实现
- 波兰、逆波兰表达式
- 逆波兰
- 逆波兰
- 逆波兰
- 如何利用堆栈及逆波兰表达式进行数学四则运算(C语言版)
- 波兰式,逆波兰式
- 波兰表达式和逆波兰表达式
- 波兰式和逆波兰式
- 波兰表达式和逆波兰表达式
- 逆波兰式与波兰式
- 波兰式转换为逆波兰式
- 01. 波兰计法,逆波兰记法
- 面试算法:利用堆栈计算逆向波兰表达式
- 逆波兰表达式
- 逆波兰式
- 重新编译ClassLoader记录被加载的类
- strlen与sizeof的区别
- 【Scikit-Learn 中文文档】决策树
- 【Scikit-Learn 中文文档】集成方法
- C#代码:求100以内的质数(素数)
- 堆栈(逆波兰)
- 唯快不破:TCP/IP详解--拥塞控制 & 慢启动 快恢复 拥塞避免
- 03 Anykey左分页布局RecyclerView
- 二次提交的避免方法(源于互联网)=>个人总结
- NOIP 2017 宝藏 (状压,搜索)
- 疯狂Activiti6.0连载(18) Activiti与Drools整合
- 判断什么时候使用输出流还是输出流
- 【Scikit-Learn 中文文档】多类和多标签算法
- ros常用命令