怎么做一考试网站,东莞免费公司网站建设,网站开发 电话,百讯网站建设目录#xff1a;
链表栈 1. 链式栈的实现2. 链表栈的创建3. 压栈4. 弹栈
链表栈
栈的主要表示方式有两种#xff0c;一种是顺序表示#xff0c;另一种是链式表示。本文主要介绍链式表示的栈。 链栈实际上和单链表差别不大#xff0c;唯一区别就在于只需要对链表限定从头…目录
链表栈 1. 链式栈的实现2. 链表栈的创建3. 压栈4. 弹栈
链表栈
栈的主要表示方式有两种一种是顺序表示另一种是链式表示。本文主要介绍链式表示的栈。 链栈实际上和单链表差别不大唯一区别就在于只需要对链表限定从头部进行删除元素和增加元素就可以了。 1. 链式栈的实现
链式栈的实现是通过先定义一个结构体节点然后定义一个指向该结构体的指针通过该指针来操作栈。 示例代码如下
typedef struct node {struct node* next; /* 指向下一个节点的指针 */int data; /* 数据域 */
} Node;
typedef Node *Stack;其中Stack是一个指向Node的指针通过该指针可以访问链式栈的栈顶元素。
2. 链表栈的创建
类似于链表的创建链表栈也分头结点和不带头结点两种。这里为了方便起见我们决定使用带头结点的版本。 示例代码如下
void InitStack(Stack *S)
{*S(Stcak)malloc(sizeof(Node));if(SNULL){return;}*S-nextNULL;
}3. 压栈
在进行压栈操作时我们规定只在链表的头部进行插入即在头结点之后插入一个元素使得这个元素的指针指向头结点的下一个元素然后让头结点的指针指向这个元素。 示例代码如下
bool Push(Stack *S,int x)
{Node *p(Stack)malloc(sizeof(Node));p-next*S-next;p-datax;*S-nextp;return true;
}4. 弹栈
同样的我们也只需要在头部进行删除元素即可 示例代码如下
int Pop(Stack *S,int *x)
{Node *pS;pS-next;Node *qp-next;S-nextq;*xp-data;free(p);
}