c语言,但他要怎么才能建立一个链表,如果能建立,为什么它的名字都一样,那我怎么找到特定的结构体? 20
#include<stdio.h>#include<stdlib.h>structnode{intdate;structnode*next;};structnode*cr...
#include<stdio.h>
#include<stdlib.h>
struct node
{
int date;
struct node *next;
};
struct node* create()
{
struct node *start,*final,*head;
start=head=(struct node*)malloc(sizeof(struct node));
start->next=NULL;
printf("You know what should put");
scanf("%d",&start->date);
start->next=NULL;
while(1)
{
printf("You know what should put");
if(getchar()!='y') break;
final=(struct node*)malloc(sizeof(struct node));
printf("input number");
scanf("%d",&final->date);
final->next=NULL;
start->next=final;
start=final;
}
return head;
}
main()
{
struct node*p;
p=create();
while(p)
{
printf("->%d",p->date);
p=p->next;
}
}
可能我问的不清楚,我想问在书上的实例中,它只利用了start和final这两个指针,似乎就创建几个链接(或者叫其他什么),而我这个就只能执行一次,而且还有错误,怎样在保证只有那两个指针就可以进行函数里的循环? 展开
#include<stdlib.h>
struct node
{
int date;
struct node *next;
};
struct node* create()
{
struct node *start,*final,*head;
start=head=(struct node*)malloc(sizeof(struct node));
start->next=NULL;
printf("You know what should put");
scanf("%d",&start->date);
start->next=NULL;
while(1)
{
printf("You know what should put");
if(getchar()!='y') break;
final=(struct node*)malloc(sizeof(struct node));
printf("input number");
scanf("%d",&final->date);
final->next=NULL;
start->next=final;
start=final;
}
return head;
}
main()
{
struct node*p;
p=create();
while(p)
{
printf("->%d",p->date);
p=p->next;
}
}
可能我问的不清楚,我想问在书上的实例中,它只利用了start和final这两个指针,似乎就创建几个链接(或者叫其他什么),而我这个就只能执行一次,而且还有错误,怎样在保证只有那两个指针就可以进行函数里的循环? 展开
1个回答
展开全部
你贴出来的代码不就是创建了一个链表吗?
至于你说的找到特定的结构体,是说要找到链表里面的某一个元素吗?这个肯定是要通过某个属性进行匹配的,比如你的链表里面只有一个属性就是int data,那么要找特定的元素的话你从链表头开始搜索,为每个元素的data与指定的值进行比较,发现相等,那么就是找到了。
start和final从名字上来看一个是指向链表的第一个元素,另一个是指向链表的最后一个元素,我就先这样理解了。
那么要插入新的元素到链表里面,通常是插入新的元素到链表末尾,可以这样做:
如果final是null, 那么表示链表为空,直接给为final创建新的节点,并且让start也指向这个节点
如果final不是null, 那么为final->next 创建新的节点(就是让新的元素插入到链表末尾),然后final = final->next
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询