堆栈(逆波兰)

来源:互联网 发布:怎么查看淘宝注册日期 编辑:程序博客网 时间: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();//}
原创粉丝点击