顺序堆栈代码
栏目:bt365真人 发布时间:2019-09-25 10:31
全部展开
//头文件#includestdio。
h#includestring。
h#containstdlib。
h #includemalloc。
h //宏定义#defineTRUE1#defineFALSE0#defineOK1 #defineERROR0#defineINFEASIBLE-1#defineOVERFLOW-2#defineSTACK_INIT_SIZE100 #defineSTACKINCREMENT10typedefintElemType; typedefintStatus; // typedefstruct fin由{defemType * base; ElemType;SqStack; // 1。
构建一个空的StatusInitStack(SqStackS)堆栈{S。
base =(ElemType *)malloc(sizeof * STACK_INIT_SIZE(ElemType)); if(!
S.
base)exit(溢出); //内存分配错误S.
高于= S.
基地
stacksize = STACK_INIT_SIZE; returnOK;}// 2。
堆栈销毁状态DestroyStack(SqStackS){S。
上限= NULL; S.
stacksize = 0; free(S。
Base); returnOK;}/// 3。
Sure Stack StatusClearStack(SqStackS){S。
高于= S.
基地; returnOK;}/// 4。
检查堆栈是否为空StatusStackEmpty(SqStackS){if(S。
上== S.
base)returnERROR; elsereturnTRUE;}// 5。
堆栈长度StatusStackLength(SqStackS){if(S。
上== S.
base)returnFALSE; elsereturn(S)
前S。
Base); //可以直接返回S.
前S。
基地}// 6。
//找到顶部元素(StatusGetTop SqStackS,ElemTypee){if(S。
上== S.
base)returnFALSE; Elsee = *(S。
top-1); Returne;}// 7。
StatusPush堆栈元素(SqStackS,ElemTypee){if(S。
前S。
base = STACK_INIT_SIZE){S。
base =(ElemType *)realloc(S。
基地,(S。
stacksize + STACKINCREMENT)* sizeof(ElemType)); if(!
S.
Base){returnfalse;}S.
高于= S.
Base + STACK_INIT_SIZE; //您可以通过重新排列电池的上部元件S来更改电池的低地址。
堆栈大小= S.
Stacksize + STACKINCREMENT;}* S.
优秀= e; S.
优秀的++; returnOK;}// 8。
StatusPop堆栈(SqStackS,ElemTypee){if(S。
上== S.
Base)returnERROR;更多{S.
Top-; e = * S.
Top; // description:这里很混乱,事实上,这个元素实际上并没有被删除,但仍然是S.
如上所述,插入项目将更新它并删除返回的项目;}}// 9。
StatusStackTraverse可滚动堆栈(SqStackS){if(S。
Base == NULL)returnERROR; if(S。
上== S.
基础)printf(堆栈中没有元素......
); ElemType * p; p = S.
而while(pS。
base){p-; printf(%d,* p);}returnOK;}// 9 intmain()操作类型主测试函数{SqStackS; printf(build empty stack ......
); InitStack(S); Inti length,nprintf(输入堆栈:
); Scanf(%d,n); for(i = 1; i = n; i ++){printf(%d个元素的输入堆栈)
,I); ++ S.
Scanf(%d,S。
top-1);}printf(......这个堆栈是空的吗?
......
);是(StackEmpty(S)== 1)printf(不!
); Elseprintf(是的!
); Printf(...找到堆栈长度...
; intm; m = StackLength(S); printf(堆栈长度:
); Printf(%d
,M); printf(跨堆栈的所有元素的输出:
); StackTraverse(S); printf(
); Printf(上部元素的输出............
); Inte; e = GetTop(S,e); printf(顶部元素是:
); Printf(%d
,E); printf(...... ......插入堆栈元素
);元素printf(输入要插入的值:
); Scanf(%d,e); push(S,e); printf(堆栈中的元素是:
); StackTraverse(S); printf(
); Printf(......堆栈顶部删除元素......
); E = Pop(S,e); printf(要删除的项目为:
); Scanf(%d,e); printf(堆栈中的元素是:
); StackTraverse(S); printf(
); Printf(...删除堆栈...
); ClearStack(S); printf(Stack元素存在:
); StackTraverse(S); printf(............堆栈破坏
);如果(DestroyStack(S)== 1)printf(通常是销毁堆栈)
); Elseprintf(电池销毁失败
); printf的(你好,所有功能的顺利完成,毕竟,你好帅!
); Return0;}


下一篇:没有了