C语言编程练习题

2024-01-14 15:27:40
有3个网友回答
网友(1):

我也是初学者,编了好长时间
# include
# include
struct node
{
int date;
struct node *next;
};
struct node *create(int n)
{
struct node *head,*s1,*r;
int i,m;

head=NULL;
for(i=1;i<=n;i++)
{
scanf("%d",&m);
s1=(struct node *)malloc(sizeof(struct node));
s1->date =m;
if(head==NULL)head=s1;
else r->next =s1;
r=s1;

}
if(r) r->next =NULL;
return head;
}
void main()
{
int n,i,j;
struct node *head,*p,*q,*r;
printf ("input n:");
scanf ("%d",&n);
head=create (n);
p=head;
while(p!=NULL)
{
printf("%d ",p->date);
p=p->next;
}
printf("\n");
p=head;
for(i=1;i {
if(i==n-1)
q=p;
p=p->next;
}
r=head;
head=p;
for(i=1;i {
p->next =q;
p=q;
q=r;
for(j=1;j {

q=q->next ;
}
}
p=head;
for(i=1;i<=n;i++)
{
printf("%d ",p->date);
p=p->next;
}
}

网友(2):

要具体程序,悬赏分还就十分啊,那你等热心的人吧,或者做题狂人
我只给你出个主意:

循环至最后两个节点,将最后一个结点的指针指向倒数第二个,同时将倒数第二个节点的指针改为空,这时得到两个链,即原来的链少了一个节点,最后两个节点则组成一个新链;然后将这个循环不断做下去,直到第一个节点的指针指向空

网友(3):

只能使用原有节点空间啊。。。虽然也不难,但是很麻烦。。