尾插法那里错了
#include<stdio.h>#include<stdlib.h>
#include<malloc.h>
typedef struct node
{
int data;
struct node *next;
}
node,*link;
void creatlink(link l,int n)
{
link p,q;
int i;
p=l;
p=(link)malloc(sizeof(node));
for (i=1;i<=n;i++)
{
q=(link)malloc(sizeof(node));
printf("请输入第%d个链表",i);
scanf("%d",&(q->data));
q->next=NULL;
p->next=q;
p=q;
}
}
void print(link l)
{
link q=l->next;
while(q!=NULL)
{
printf("%d ",q->data);
q=q->next;
}
}
main()
{
link head=NULL;
int n;
printf("请输入链表的长度");
scanf("%d",&n);
creatlink(head,n);
printf("刚刚建立的链表为\n");
print(head);
} creatlink(&head,n);这里应该传入head的地址
creatlink(link *, int);参数列表也应该改一下 #include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedef struct node
{
int data;
struct node *next;
}
node,*link;
void creatlink(link *l,int n) //指向指针的指针(link *l)
{
link p,q;
int i;
(*l)=(link)malloc(sizeof(node)); //你一进来首先就要为head 分配内存空间,返回的地址存入head。而要修改head存放的地址,得要用指向指针的指针(link *l)。
p=(*l);
for (i=1;i<=n;i++)
{
q=(link)malloc(sizeof(node));
printf("请输入第%d个链表",i);
scanf("%d",&(q->data));
q->next=NULL;
p->next=q;
p=q;
}
}
void print(link l)
{
link q=l->next;
while(q!=NULL)
{
printf("%d ",q->data);
q=q->next;
}
}
main()
{
link head=NULL;
int n;
printf("请输入链表的长度");
scanf("%d",&n);
creatlink(&head,n); //传入head指针的地址,已便函数内 修改 head指针 里存放的地址。
printf("刚刚建立的链表为\n");
print(head);
} 本帖最后由 幽梦三影 于 2018-4-16 07:16 编辑
好了
页:
[1]