进栈算法 通过地址传递,用 #define statcksize 100 op带回实际栈顶指 int push(int s[l, int x, int*ptop) nt top; top=ptop; if(top= =stacksize) 98765432 top printf("overflow); return);] a4 else s[top]=x; a *ptop=+top;/*实际栈顶指针加1*/ 1 a2 return(1):] 0a1
·进栈算法 #define statcksize 100 int push(int s[ ], int x, int *ptop) { int top; top=*ptop; if(top= =stacksize) {printf(“overflow”); return (0); } else { s[top]=x; *ptop=++top; /*实际栈顶指针加1*/ return (1) ; } } 通过地址传递,用 ptop带回实际栈顶指 针 a2 a3 a4 9 8 7 6 5 4 3 2 1 0 a1 top
出栈算法: 通过地址传递,用 ptop带回实际栈顶指 int pop(int s[ l, int ptop, int*py) Int top; 栈 top="ptop 通过指针变量py 带回出栈元素 if(top==0) i printf( "stack empty"); return (O); 1 top else(--top a *py=s[top]/*返回出栈元素*/ a ptop=top; 9876543210 a 2 return (1); a1
出栈算法: int pop(int s[ ], int *ptop, int *py) { int top; top=*ptop; if(top= =0) { printf(“stack empty”); return( 0); } else { - -top; *py=s[top]; /*返回出栈元素*/ *ptop=top; return(1); } } 通过地址传递,用 ptop带回实际栈顶指 针 通过指针变量py 带回出栈元素 栈 s a2 a3 a4 9 8 7 6 5 4 3 2 1 0 a1 top
(2)鲢栈 用指针来实现的栈叫链栈。栈的容量事先不能 估计时采用这种存储结构。 链栈的类型说明如下: Typedef struct Inode topx 栈底 int data struct Inode * next: iNode,*Stack
x ∧ top 栈底 (2)链栈 用指针来实现的栈叫链栈。栈的容量事先不能 估计时采用这种存储结构。 链栈的类型说明如下: Typedef struct lnode{ int data; struct lnode next; }lnode,Lstack;
进栈算法 int Push(Stack s, int e 进栈元素e 栈s p=(Lstack malloc(sizeof(node) p->data=e p->next=s S-p return(1; ∧bas
进栈算法 int lpush(Lstack s, int e) { p=(Lstack)malloc(sizeof(lnode)); p->data=e; p->next=s; s=p; return (1); } ∧ bas e S 栈 s 进栈元素e
进栈算法 int Push(Stack s, int e p=(Stack)malloc(sizeof(Inode)); p->data=e p->next=s S-p return(1; ∧|bas
进栈算法 int lpush(Lstack s, int e) { p=(Lstack)malloc(sizeof(lnode)); p->data=e; p->next=s; s=p; return (1); } ∧ P bas e S