关于用栈给链表赋值

有事不细心导致的,错误,浪费了这么多的时间,咳,

                           Jasper 20105139: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)AASC||值就是输出相应的字符了,如要是输出一个换行符,直接用putchar(10),输出一个空格用putchar(0)*/

 /* 开始老是错误的原因在于我吧t[]栈,的名字已r的形式传递改了creat,所以它提示非法运算,所以啊,检查细心的正确性是这么重要啊*/        

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值