链栈的定义为什么要分两步,一次不可以吗
在看链栈的时候。定义时要这样typedef struct stacknode{
datatype data
struct stacknode *next
}stacknode;
typedef struct {
stacknode *top;
}linkstack;
可是我直接这样不行吗
typedef struct stacknode{
datatype data
struct stacknode *next
}stacknode;
把它当作一个单链表,下面是我写的它的基本操作,有一个错误,大家帮忙改改
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedef struct node/*建一个表的类型*/
{
int date;
struct node *next;
}lstuct;
void Init(lstuct *p)/*置空啊,没办法,我只能这样*/
{
p=NULL;
}
void push(lstuct *p,int m)
{
lstuct *s;
s=(lstuct*)malloc(sizeof(lstuct));/*为入的这个数分配内存空间*/
if(!s)
printf("mei you fen pei hao a");
s->next=NULL;
s->date=m;
else
if(p==NULL)
p=s;
else
{
s->next=p;
p=s;
}
}
void pop(lstuct *p)
{
lstuct *s=p;
if(p==NULL)
printf("不行啊,没元素,怎么删啊");/*13.41*/
else
{
p=p->next;
free(s);
}
}
void display(lstuct *p)
{
if(p==NULL)
printf("不行啊,你输不出来啊,一个数都没有,怎么输");
else
while(p!=NULL)
{
printf("%d",p->date);
p=p->next;
}
}
void main()
{
lstuct *p;
p=(lstuct*)malloc(sizeof(lstuct));
Init(p);
push(p,3);
push(p,4);
push(p,5);
printf("你写入的数是:");
display(p);
pop(p);
printf("\n你出来后的数为:");
display(p);
}