范文无忧网计划总结工作总结

数据结构中关于栈的问题

03月16日 编辑 fanwen51.com

[市财政收支结构中存在的主要问题与改进思路]九象网网: .9xwang.九象网网: .9xwang. 一、当前xx市财政收支结构中存在的主要问题九象网网: .9xwang.九象网网: .9xwang. (一)财政收入结构问题突出九象网网: .9xwang.九象网...+阅读

数据结构中关于栈的问题

主要是考察把中缀表达式换为后缀表达式 然后运用堆栈求值的运算 我可以提供一点思路——供参考 【将中缀表达式转化为后缀】#include #include #include typedef struct node { char data; int code; int pri; struct node *link; }NODE; struct Tb1 { char data; int code; int pri; }opchTb1[]={{'*',1,4},{'/',2,4},{'+',3,2},{'-',4,2},{'(',5,5},{')',6,1},{'\0',7,0},{'#',-1,0}}; NODE *optop; char num[200], *numtop; char expStr[200]; void push(char x,int c,int p,NODE **toppt) { NODE *q=(NODE *)malloc(sizeof(NODE)); q->data=x; q->code=c; q->pri=p; q->link=*toppt; *toppt=q; } int pop(char *op,int *cp, NODE **toppt) { NODE *q=*toppt; if(*toppt==NULL) return 1; *op=q->data; *cp=q->code; *toppt=q->link; free(q); return 0; } int expr(char *pos) { struct Tb1 *op; char sop; int type,code,n,m,i,c; optop=NULL; numtop=num; n=m=0;; push('#',0,0,*optop); while

(1){ while(c==' '||c=='\t') c=*pos++; if(isalpha(c)){ *numtop++=' '; while(isalpha(c)||isdigit(c)) {*numtop++=c;c=*pos++;} if(m) return 1; m=1; continue; } else { for(i=0;opchTb1[i].code!=-1&opchTb1[i].data!=c;i++) if(opchTb1[i].code==-1) return 3; op=&opchTb1.[i]; type=opchTb1.[i].code; c=*pos++; } if(type if(m!=1) return 1; m=0; } if(type==5) n++; if(type==6){ if(n--==0) return 2; if(op->pri>optop->pri) if(op->data=='(') push(op->code,1,*optop); else push(op->data,op->code,op->pri,*optop); else{ while(optop!=NULL&op->pripri) { pop(&sop,&code,&optop); if(code0) { *numtop++=' '; *numtop++=sop; } } if(op->data=='\0') return(n!=0||(m!=1&numtop>num))?4:(*numtop='\0'); else if(op->data!=')') push(op->data,op->code,op->pri,&optop); } } } void main() { int d; printf("please input the string!\n"); gets(expStr); if((d=expr(expStr))==0) printf("the postfix string is:%s\n",num); else printf("The string error! the error is:%d\n",d); getch(); } 【后缀表达式的计算】#include #include #include #define MAXCOLS 80#define TRUE 1#define FLASE 0 double eval(char[]); double pop(struct stack *ps); void push(struct stack *ps,double x); int empty(struct stack *ps); int isdigit(char); double oper(int,double,double); void main() { char expr[MAXCOLS]; int position=0; printf("\nPlease input the string:"); while((expr[position++]=getchar())!='\n'); expr[--position]='\0'; printf("%s%s","the original postfix expression is",expr); printf("\n%f",eval(expr)); getch(); } /*end main*//*程序的主要部分eval函数,这个函数只是计算算法的C语言实现,同时考虑了特定的环境和数据的输入*//*输出格式。eval调用了一个isdigit函数,它用来判断其参数是不是一个操作数。在函数eval及其调用的*//*pop和push例程中都使用了下面的堆栈说明。eval函数在声明后给出*/ struct stack{ int top; double items[MAXCOLS]; }; double eval(char expr[]) { int c,position; double opnd1,opnd2,value; struct stack opndstk; opndstk.top=-1; for(position=0;(c=expr[position])!='\0';position++) if(isdigit(c)) /*operand--convert the character representation of the digit into double and*/ /*push it onto the stack*/ push(&opndstk,(double)(c-'0')); else{ /*operator*/ opnd2=pop(&opndstk); opnd1=pop(&opndstk); value=oper(c,opnd1,opnd2); push(&opndstk,value); } /*end else*/ return(pop(&opndstk)); }/*end eval*//*下面的函数在许多C系统中都被预定义为一个宏*/ int isdigit(char symb) { return(symb>='0'&symb}/*函数oper首先检查它的第一个参数是不是一个合法的运算符,如果是,则用另外两个参数来决定运算结果*//*对于求幂运算,使用了math.h中定义的函数pow(op1,op2)。*/ double oper(int symb,double op1,double op2) { switch(symb){ case '+' : return(op1+op2); case '-' : return(op1-op2); case '*' : return(op1*op2); case '/' : return(op1/op2); case '$' : return(pow(op1,op2)); default:printf("%s","illegal operation"); exit

(1); }/*end switch*/ }/*end oper*/ double pop(struct stack *ps) { if(empty(ps)){ printf("%s","stack underflow"); exit

(1); } /*end if*/ return(ps->items[ps->top--]); }/*end pop*/ void push(struct stack *ps,double x) { ps->items[++(ps->top)]=x; return; } /*end push*/ int empty(struct stack *ps) { return(ps->top==-1); }/*end empty*/ 希望对你有帮助

数据结构栈求解!

typedef struct{

ElemType *elem;

int length;

int listsize;

}Sqlist;

已知:Stack是一个已实现的栈

即使用相关的类型和函数:

typedef char SElemType;//栈Stack的元素类型

Status InitStack(Stack &s);

Status Push(Stack &s,SElemType e);

Status Pop(Stack &s,SElemType &e);

Status StackEmpty(Stack);

Status GetTop(Stack s,SElemType &e);

Stack MatchCheck(Sqlist bmp)

{

Stack s;

char *p;

SElemType c;

InitStack(s);

for(p=bmp.elem;*p;p++)

{

if(*p='('||*p='['||*p='{')

Push(s,*p);

else if(*p=')'||*p=']'||*p='}')

{

if(StackEmpty(s))return false;

Pop(s,c);

if(*p==')'&&c!='(')return false;

if(*p==']'&&c!='[')return false;

if(*p=='}'&&c!='{')return false;

}

}

if(!StackEmpty(s))return false;

return true;

}

数据结构基础。列举有关栈的问题实例

typedef int datatype ; /*定义栈中数据元素的数据类型*/#define maxsize 64 /*定义栈的容量*/typedef struct { datatype data[maxsize] ; /*用数组作为栈的存储空间*/ int top ; /*指示栈顶位置(数组下标)的变量*/} seqstack ; /*顺序栈类型定义*/seqstack *s ; /*定义指向顺序栈的指针*/

}置空栈SETNULL (seqstack *s){ s-> top = -1 ;} }判断空栈 :bool EMPTY (seqstack *s){ return ((s->top >= 0)? FALSE :TRUE);}

}进栈 : void PUSH (seqstack *s , datatype x) { if (s->top = = maxsize-1){ printf ( “overflow !\n”) ; return NULL ; } else { s->top ++ ; s->data[s->top] = x ; } }PUSH(L, b);

}出栈 : datatype POP(seqstack *s) { if (EMPTY (s)){ printf ( “underflow !\n”) ; return NULL; } else return (s->data[s->top - -]); } }取栈顶 : datatype TOP(seqstack *s) {if (EMPTY (s)){ printf ( “underflow !\n”) ; return NULL ; } else return (s->data[s->top]); }

数据结构栈的表达式求值系统概述

#include#include#include#define error 0#define ok 1#define overflow -1#define STACK_INIT_SIZE 100#define STACKINCREMENT 10#define OPSETSIZE 7char OPSET[OPSETSIZE]={'+','-','*','/','(',')','#'};unsigned char Prior[7][7] = { // 算符间的优先关系 '>','>','','>','','>','>','>','','>', '>','>','>','>','','>', '','>', '

延伸阅读:

财源结构现状及思考汇报问题为了更加好地促进我们全区财源建设工作健康发展路线,按照市委、市政府的总体部署,我们于去年的12月10日至31日,对开发区内9个单位和十多家企业,通过实地考察、组织座谈、问卷...

领导班子年龄结构和干部任职年限合理化问题调研思考领导班子年龄结构和干部任职年限合理化问题调研思考 全国组织工作会议指出,要认真研究解决领导班子年龄结构和干部任职年限合理化问题。年龄结构作为领导班子的重要构成要素...

关于调整农业结构增加农民收入问题的探讨家住姜堰市蒋垛镇许桥村四组的蚕桑大户申太宝过了个舒心年,靠养蚕,他去年收入近万元。像申太宝这样的蚕桑大户在蒋垛镇还有几百户,目前该镇已形成万亩桑园,并间套千亩丹参的种植...

农业结构调整中的问题和对策**农业结构调整中的问题和对策 2005年,中共中央国务院又发出一号文件,再一次表明党中央、国务院高度重视农业、农村和农民工作。我市农业经济从1998年开始进行全面的调整和优...

数据结构课设总结我正好在做课设,我把我的总结给你。 数据结构是计算机程序设计的重要理论技术基础,它不仅是计算机科学的核心课程,而且也已经成为其他理工专业的热门选修课。随着高级语言的发...

年度总结中关于工作态度怎么写MEI自己根据实际情况来写吧,主要写一下主要的工作内容,如何努力工作,取得的成绩,最后提出一些合理化的建议或者新的努力方向。。。。。。。工作总结就是让上级知道你有什么贡献,...

数据结构本科生导师制问题只要能够运行的代码就行今天急用#include#includeusing namespace std;class LS{private:struct Node//建立结点{string name;string prof;int type;Node * right,*down;//每个节点有向右和向下的指针Node()...

数据结构堆排序算法#includevoid adjust(int *list,const int root,const int n); void HeapSort(int *list,const int n) { int i=0; for(i=n/2;i>=1;i--) adjust(list,i-1,n); int t=list[n]...

急!C语言程序数据结构排序算法的问题#include"stdio.h" #include"stdlib.h" #include "string.h" #define Max 100 //假设文件长度 typedef struct{ //定义记录类型 int key; //关键字项 }RecType; typedef RecType Se...

推荐阅读
图文推荐
栏目列表