int push( DualStack* DS, Stack Data x, int 1)( if( Ds->t0+l--DS->t I return 0; if(i-0)t[0++; else t[ll DS->data Ds->ti=x; return 1; int Pop dualStack*DS, Stack Data &x, int 1)i if ( Ds->t1==Ds->bi)return 0 x= DS->data Ds->ti;\ if (i==0)t[O]--;else t[1++ return l
int push ( DualStack *DS, StackData x, int i ) { if ( DS->t[0]+1 == DS->t[1] ) return 0; if ( i == 0 ) t[0]++; else t[1]--; DS->data[DS->t[i]] = x; return 1; } int Pop (DualStack *DS, StackData &x, int i ) { if ( DS->t[i] == DS->b[i] ) return 0; x = DS->data[DS->t[i]]; if ( i == 0 ) t[0]--; else t[1]++; return 1; }
栈的链接表示一链式栈 top- 链式栈无栈满问题,空间可扩充 插入与删除仅在栈顶处执行 链式栈的栈顶在链头 适合于多栈操作
栈的链接表示 — 链式栈 ◼ 链式栈无栈满问题,空间可扩充 ◼ 插入与删除仅在栈顶处执行 ◼ 链式栈的栈顶在链头 ◼ 适合于多栈操作 top
链式栈 Linkstack)的定义 typedef int Stack Data; typedef struct node t Stack Data data; /结点数据 struct node *link. ∥/结点链指针 3 Stack Node, typedef struct t StackNode top; 栈顶指针 3 LinkStack;
typedef int StackData; typedef struct node { StackData data; //结点数据 struct node *link; //结点链指针 } StackNode; typedef struct { StackNode *top; //栈顶指针 } LinkStack; 链式栈 (LinkStack)的定义
链式栈操作的实现 void InitStack( LinkStack =Si S->top- NULL; int Push( LinkStack*S, Stack Data x)( Stack Node *p=( StackNode %)malloc sizeof( StackNode ))i p->data=x; p->link=S->top; S->top=p; return 1;
链式栈操作的实现 void InitStack ( LinkStack *S ) { S->top = NULL; } int Push ( LinkStack *S, StackData x ) { StackNode *p = ( StackNode * ) malloc ( sizeof ( StackNode ) ); p->data = x; p->link = S->top; S->top = p; return 1; }
int StackEmpty (LinkStack *S)t return S->top=- NULL; int Pop( Link Stack *S, Stack Data &x i if( StackEmpty(S))return 0 StackNode *p=S->top S->top=p->links x=p->data free(p); return 1
int StackEmpty (LinkStack *S) { return S->top == NULL; } int Pop ( LinkStack *S, StackData &x ) { if ( StackEmpty (S) ) return 0; StackNode * p = S->top; S->top = p->link; x = p->data; free (p); return 1; }