c语言、数据结构高手请进

#include <stdlib.h>
typedef struct node
{
int data;
struct node *next;
}Stacknode,*LinkStack;
LinkStack kongzhan()
{
return NULL;
}
int pankong(LinkStack top)
{
if(top==NULL)
return 1;
else
return 0;
}
int ruzhan(LinkStack top,int x)
{
Stacknode *s;
s=malloc(sizeof(Stacknode));
s->data=x;
s->next=top;
top=s;
printf(" %d",top->data);
return top;
}
LinkStack chuzhan(LinkStack top,int *x)
{
Stacknode *p;
if(top==NULL)
return NULL;
else
{
*x=top->data;
p=top;
top=top->next;
free(p);
return top;
}
}
main()
{
LinkStack top=kongzhan();
LinkStack top1;
int x=-1,flag=1;
int i=0;
for(i=0;x!=0;i++)
{
printf("qing shu ru ni yao ru zhan de di %d ge yuan su:",flag);
scanf("%d",&x);
if(x!=0)

flag++;
}
ruzhan(top,x);
top1=top;
while(top!=NULL)
{
printf("%d\t",top->data);
top->next;
flag--;
}
top=top1;
getch();
}
小弟最近在学习,数据结构(c语言版的)。但是学到栈和队列的时候,遇到麻烦。以上是我写的一段程序,入栈没有问题,但是我想把入栈后的所有元素读出,但是不是让他们出栈,总是读不出来,我怀疑 {
printf("%d\t",top->data);
top->next;
flag--;
}
但是就是找不到原因,请高手指点。。。小弟先谢过了。。。

元素就没成功入栈。
出栈的时候栈顶指针没变化
3输出元素的时候指针无变化
返回值与函数的返回类型不一直
...
...
...

将你的程序改了下,下面的可以正常输出了。

#include <stdlib.h>
typedef struct node
{
int data;
struct node *next;
}Stacknode,*LinkStack;
LinkStack kongzhan()
{
return NULL;
}
int pankong(LinkStack top)
{
if(top==NULL)
return 1;
else
return 0;
}
LinkStack ruzhan(LinkStack top,int x)
{
Stacknode *s;
s=malloc(sizeof(Stacknode));
s->data=x;
s->next=top;
top=s;
//printf("%d",top->data);
return top;
}
LinkStack chuzhan(LinkStack top,int *x)
{
Stacknode *p;
if(top==NULL)
return NULL;
else
{
*x=top->data;
p=top;
top=top->next;
free(p);
return top;
}
}
int main()
{
LinkStack top=kongzhan();
LinkStack top1;
int x=-1,flag=1;
int i=0;
for(i=0;x!=0;i++)
{
printf("qing shu ru ni yao ru zhan de di %d ge yuan su:",flag);
scanf("%d",&x);
if(x!=0)
{
top=ruzhan(top,x);
flag++;
}

}
while(top!=NULL)
{
printf("%d\t",top->data);
top=top->next;
}
system("pause");
return(0);
}

#include <stdlib.h>
typedef struct node
{
int data;
struct node *next;
}Stacknode,*LinkStack;
LinkStack kongzhan()
{
return NULL;
}
int pankong(LinkStack top)
{
if(top==NULL)
return 1;
else
return 0;
}
LinkStack ruzhan(LinkStack top,int x)
{
Stacknode *s;
s=malloc(sizeof(Stacknode));
s->data=x;
s->next=top;
top=s;
//printf("%d",top->data);
return top;
}
LinkStack chuzhan(LinkStack top,int *x)
{
Stacknode *p;
if(top==NULL)
return NULL;
else
{
*x=top->data;
p=top;
top=top->next;
free(p);
return top;
}
}
int main()
{
LinkStack top=kongzhan();
LinkStack top1;
int x=-1,flag=1;
int i=0;
for(i=0;x!=0;i++)
{
printf("qing shu ru ni yao ru zhan de di %d ge yuan su:",flag);
scanf("%d",&x);
if(x!=0)
{
top=ruzhan(top,x);
flag++;
}

}
while(top!=NULL)
{
printf("%d\t",top->data);
top=top->next;
}
system("pause");
return(0);
}
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答