1、存储方式:
同一般线性表的单链式存储结构完全相同。但是应该确定链表的哪端对应于栈顶,如果链表尾作为栈顶,则入,出栈操作的时间复杂性为O(n)。
如果链表头作为栈顶,则入、出栈操作的时间复杂性为O(1)。所以,一般把链表的表头作为栈顶。
2、实现
1)栈初始化
S=(LStack*)malloc(sizeof(LStack));
S.next=NULL;
2)入栈
p=(LStack*)malloc(sizeof(Lstack));
p->data=e;
p->next=S->next;
S-next=p;
3)出栈//删除栈顶元素,并用e返回其值
if(S->next==NULL)
return EVERFLOW
else p=S->next;e=p->data;
s-next=p->next;
free(p);
4)判断栈是否空
if(S->next=NULL)
return TRUE;