有事不细心导致的,错误,浪费了这么多的时间,咳,
Jasper 2010年5月13日9:49:06
#include "stdio.h"
#include "stdlib.h"
#include "liu.c"
#include "conio.h"
#define A sizeof(struct stud)
#define B 5
typedef struct stud
{ int data;
struct stud *next;
}st;
int t[B];
int top=0;
void inter(int s[])
{ int n ;
printf("/n开始输入栈中的值;/n");
while(top<B)
{scanf("%d",&n);
s[top++]=n;
}
}
st *creat()
{
st *h,*r,*s;
if((r=s=(st *)malloc(A))==NULL)
{ printf("/n分配失败了:/n");
getch();
exit(0);
}
s->data=t[--top];/* 开始时s->data=r[--top],因为这个r不是存在的,所以,提示非法运算,咳,都是不细心啊*/
s->next=NULL;
h=s;
while(top>=0) /* 如果这里是top>0的话,那么这个链表输出时会少一个值,因为最后一个值没有入练*/
{ r->next=s;
r=s;
if((s=(st *)malloc(A))==NULL)
{printf("/n分配失败了:/n");
getch();
exit(0);
}
s->data=t[--top];
}
r->next=NULL;
return h;
}
void pint(st *head)
{
st *p;
if(head!=NULL)
p=head;
do
{ printf("%2d",p->data);
p=p->next;
}while(p!=NULL);
}
main()
{
st *h;
jasper
inter(t);
AB
h=creat();
pint(h);
jasper2
}
/* putchar(A)A为ASC||值就是输出相应的字符了,如要是输出一个换行符,直接用putchar(10),输出一个空格用putchar(0)*/
/* 开始老是错误的原因在于我吧t[]栈,的名字已r的形式传递改了creat,所以它提示非法运算,所以啊,检查细心的正确性是这么重要啊*/