C语言中编写两个函数我是新手,最近学到单向链表了,有一个疑惑.比如,假设编写函数creat是建立一个带有头结点的链表,编写函数take是顺序输出单向链表各结点数据的内容.函数creatstruct list{char
来源:学生作业学帮网 编辑:学帮网 时间:2024/05/23 22:31:21
C语言中编写两个函数
我是新手,最近学到单向链表了,有一个疑惑.比如,假设编写函数creat是建立一个带有头结点的链表,编写函数take是顺序输出单向链表各结点数据的内容.
函数creat
struct list
{char data;
struct list * next;
};
SLIST *creat()
{ int c;
SLIST *h,*s,*r;
h=(SLIST *)malloc(sizeof(SLIST)); /*生成头结点*/
r=h; /*r指向当前表尾*/
scanf(“%d”,&c) /*读入数据*/
while(c!=1) /*未读到数据结束标志时进入循环*/
{ s=(SLIST *)malloc(sizeof(SLIST)); /*生成一个新结点*/
s->data=c /*读入的数据存入新结点的data域*/
r->next=s: /*新结点连到表尾*/
r=s: /*r指向当前表尾*/
scanf(“%d”,&c); /*读入数据*/
}
r->next=‘\0’; /*置链表结束标志*/
return h; /*返回表头指针*/:
}
函数take:
void take(SLIST *head)
{ SLIST *p; .
p=head->next; /*p指向头结点后的第一个结点*/
if(p==‘\O’)
printf(“Linklist is null!\n”); /*链表为空(只有头结点)*/
else /*链表非空*/
{printf(“head”);
do
{printf(“->%d”,p->data); /*输出当前结点数据域中的值*/
p=p->next; /*p指向下一个结点*/
}
while(p!=‘\O’); /*未到链表尾,继续循环*/
printf(“->end\n”);
}
我想问的就是能不能在一个程序里面编写上面两个函数,然后在主函数里面实现先建立再输出呢.或者不需要编写函数?
上面的SLIST代表 struct list.如果可以怎么编写,直接在把上面两个函数写上,最后补上如下程序
void main()
{
struct list *pig;
pig=creat();
take(pig);
}
运行了就崩溃,哪里错了呢.讲会了加50分.关于形参实参,传值传址我懂的
当然可以的