数据结构与算法 — 栈的链式存储结构

对于栈来说,使用顺序存储结构偏多,而对于队列,则是使用链式结构偏多,栈的概念在前一篇已经介绍了,这篇主要给一下链式的代码:

基本定义:


typedef int ElemType; //这里用int示例
 
typedef struct StackNode //节点的定义 
{
	ElemType data;
	struct StackNode *next;
}StackNode,*LinkStackPtr;
 
typedef struct LinkStack //栈结构的定义 
{
	LinkStackPtr top;
	int count;
}LinkStack;

三种基本操作:

int StackEmpty(LinkStack *S)
{
   if(S->top==NULL) return 1;
   else return 0;
}

void Push(LinkStack *S,ElemType e)
{
   LinkStackPtr p=(LinkStackPtr)malloc(sizeof(StackNode));
   p->data=e;
   p->next=S->top;
   S->top=p;
   S->count++;
}

Status Pop(LinkStack *S,ElemType &e)
{
   LinkStackPtr p;
   if(StackEmpty(S)) return 0;
   e=S->top->data;
   p=S->top;
   S->top=S->top->next;
   free(p);
   S->count--;
   return 1;
}


关于栈的其他操作前面篇博客已经说得很清楚啦,因为顺序存储结构用的比较多,这里就不过多赘述了。

猜你喜欢

转载自blog.csdn.net/weixin_45121946/article/details/106548578
今日推荐