关于C语言 尾插法建立单链表并将头指针返回给主函数的问题
#include<stdio.h>#include<malloc.h>typedefstructLNode{intdata;structLNode*next;}LinkL...
#include<stdio.h>
#include<malloc.h>
typedef struct LNode
{ int data;
struct LNode *next;
}LinkList;
LinkList* Create(int n)
{LinkList *s,*r,*L;int i;
L=(LinkList *)malloc(sizeof(LinkList));
r=L;
for(i=0;i<n;i++)
{s=(LinkList *)malloc(sizeof(LinkList));
s->data=i+1;
r->next=s;
r=s;
}
r->next=NULL;
return(L);
}
void main()
{int a;
LinkList *c;
printf("请输入链表长度:");
scanf("%i",&a);
c=Create(a);
}
这个函数能不能实现建立一个长度为n的链表,结点的data域值分别为1,2,3,4...n。c为指向这条链表的指针? 展开
#include<malloc.h>
typedef struct LNode
{ int data;
struct LNode *next;
}LinkList;
LinkList* Create(int n)
{LinkList *s,*r,*L;int i;
L=(LinkList *)malloc(sizeof(LinkList));
r=L;
for(i=0;i<n;i++)
{s=(LinkList *)malloc(sizeof(LinkList));
s->data=i+1;
r->next=s;
r=s;
}
r->next=NULL;
return(L);
}
void main()
{int a;
LinkList *c;
printf("请输入链表长度:");
scanf("%i",&a);
c=Create(a);
}
这个函数能不能实现建立一个长度为n的链表,结点的data域值分别为1,2,3,4...n。c为指向这条链表的指针? 展开
展开全部
能呀,,c是指向该链表的指针,,但是你怎么不编一个释放内存的函数,,这样做对电脑不好,,
这是显示链表函数:
void show(P *h)
{
P *p;
p=h->next;
while(p!=NULL)
{
printf("%-10d",p->data);
p=p->next;
}
puts("");
}
这是释放链表的函数:
void fre(P *h)
{
P *p1=h,*p2=h->next;
while(p2!=NULL)
{
free(p1);
p1=p2;
p2=p2->next;
}
}
这是显示链表函数:
void show(P *h)
{
P *p;
p=h->next;
while(p!=NULL)
{
printf("%-10d",p->data);
p=p->next;
}
puts("");
}
这是释放链表的函数:
void fre(P *h)
{
P *p1=h,*p2=h->next;
while(p2!=NULL)
{
free(p1);
p1=p2;
p2=p2->next;
}
}
追问
额 我是个新手啊 不是很理解为什么要释放啊关闭程序的时候应该会把内存释放掉吧..
追答
malloc申请的内存得释放,,其他的不用释放,数据占用的内存程序会释放,,
展开全部
这个函数可以实现建立一个长度为n的链表
不过c=Create(a);这里c是一个表头指针,内容为空,要访问链表应该从c->next所指向的节点开始,例如在主函数中加上输出链表
void main()
{int i,a;
LinkList *c,*p;
printf("请输入链表长度:");
scanf("%i",&a);
c=Create(a);
p=c->next;
for(i=0;i<a;i++)
{
printf("%4d",p->data);
p=p->next;
}
printf("\n");
}
不过c=Create(a);这里c是一个表头指针,内容为空,要访问链表应该从c->next所指向的节点开始,例如在主函数中加上输出链表
void main()
{int i,a;
LinkList *c,*p;
printf("请输入链表长度:");
scanf("%i",&a);
c=Create(a);
p=c->next;
for(i=0;i<a;i++)
{
printf("%4d",p->data);
p=p->next;
}
printf("\n");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询