# include <stdio.h>
# include <stdlib.h>
typedef struct node{
int data;
struct node *next;
}stackNode;
typedef struct{
stackNode *stackTop;
}LINKSTACK;//采用两个结构体可以避免使用**的场景,并且后期方便管理
void init_linkStack(LINKSTACK *linkstack)
{
linkstack->stackTop = NULL;
}
void linkStack_push(LINKSTACK *linkstack,int n)
{
stackNode *p = (stackNode*)malloc(sizeof(stackNode));
p->data = n;
p->next = linkstack->stackTop;
linkstack->stackTop = p;
}
int getTop_data(LINKSTACK *linkstack)
{
if(isEmpty(linkstack))
{
printf("stack empty!\n");
return;
}
return linkstack->stackTop->data;
}
int isEmpty(LINKSTACK *linkstack)
{
if(linkstack->stackTop)
return 0;
else
return 1;
}
int pop_linkStack(LINKSTACK *linkstack)
{
if(isEmpty(linkstack))
{
printf("stack empty!\n");
return;
}
stackNode *q = linkstack->stackTop;
int popData = q->data;
linkstack->stackTop = linkstack->stackTop->next;
free(q);
return popData;
}
int stack_length(LINKSTACK *linkstack)
{
int i = 0;
stackNode *p = linkstack->stackTop;
while(p){
p = p->next;
i++;
}
return i;
}
int main()
{
LINKSTACK *linkstack = (LINKSTACK*)malloc(sizeof(LINKSTACK));
init_linkStack(linkstack);
int i = 1;
for(i;i<=10;i++){
linkStack_push(linkstack,i);
}
printf("topdata:%d\n",getTop_data(linkstack));
printf("length:%d\n",stack_length(linkstack));
printf("popData:%d\n",pop_linkStack(linkstack));
printf("popData:%d\n",pop_linkStack(linkstack));
printf("topdata:%d\n",getTop_data(linkstack));
}
c语言:栈的链式存储结构
最新推荐文章于 2022-09-17 00:07:16 发布