- 注册时间
- 2004-10-13
- 最后登录
- 2019-5-15
⑧专业
*永恒国度*
- 积分
- 14145

|
#include<stdio.h>
#include<malloc.h>
typedef struct linknode
{
char data;
struct linknode *next;
}linkstack;
void initstack(linkstack **s) // 初始化栈
{
*s=NULL;
}
void push(linkstack **s,char x) // 入栈
{
linkstack *q,*q1;
q1=*s;
q=(linkstack *)malloc(sizeof(linkstack));
q->data=x;
q->next=*s;
*s=q;
}
void pop(linkstack **s) // 出栈
{
linkstack *t;
if(*s==NULL) printf("栈下溢出!\n");
else
{
t=*s;
*s=t->next;
free(t);
}
}
char gettop(linkstack **s) // 取栈顶元素
{
if(*s==NULL) return -1;
else return((*s)->data);
}
int empty(linkstack **s) // 判断是否为空
{
if(*s==NULL) return 1;
else return 0;
}
void display(linkstack **s) // 显示所有元素
{
linkstack *q;
printf("栈中元素:");
q=*s;
while(q!=NULL)
{
printf("%c ",q->data);
q=q->next;
}
printf("\n");
}
void main()
{
linkstack *stack;
printf("建立空栈\n");
initstack(&stack);
printf("栈空:%d\n",empty(&stack));
printf("依次插入a,b,c,d\n");
push(&stack,'a');
push(&stack,'b');
push(&stack,'c');
push(&stack,'d');
display(&stack);
printf("退一次栈\n");
pop(&stack);display(&stack);
}
偶想问下入栈的那部分,最后的一句 *s=q; 是不是每次插入后,使栈顶的元素地址就是刚刚插入的那个地址呢? |
|