- 论坛徽章:
- 0
|
下面就是一小段简单的代码,作用是返回栈顶的元素,现在的困惑就是当这个栈为空我该怎么处理:abor(),exit()还是其他。
我一般用下面的处理方法,但是这样带来了一个问题,就是栈顶元素无法通过返回值进行返回。
- //
- typedef struct seqStackNode {
- int top;
- datatype *data;
- int max_len; //error 2 :init with value
- #ifdef __INT_STATCK_WITH_MIN__
- datatype minVal;
- #endif // __INT_STATCK_WITH_MIN__
- } seqStack;
- //s 表示一个栈
- //e表示用来存放返回的栈顶元素的地址
- //返回值表示 这个函数的执行状态,成功返回0,失败返回1
- int getTop(seqStack *s, datatype *e)
- {
- if (isEmpty(s)) {
- return -1;
- }
- #ifdef __INT_STATCK_WITH_MIN__
- if (s->data[s->top] < s->minVal) {
- *e = s->minVal;
- s->minVal = 2*(s->minVal) - s->data[s->top];
- } else {
- *e = s->data[s->top];
- }
- #else
- *e = s->data[s->top];
- #endif // __INT_STATCK_WITH_MIN__
- return 0;
- }
复制代码 想请大家提点意见,这个函数该怎么改,才能让其返回值是栈顶元素,同时还能处理好异常情况。 |
|