首页 热点资讯 义务教育 高等教育 出国留学 考研考公

c语言的实现

发布网友 发布时间:2022-04-22 06:50

我来回答

3个回答

热心网友 时间:2022-06-16 22:01

#include<stdio.h>
#include<malloc.h>
#define NULL 0

struct node
{
int data;
struct node *next;
};

struct node *head,*head_a;

struct node *create()
{
struct node *tail, *p;
int x;
head=tail=NULL;
printf("\n请输入一个整数:\n");
scanf("%d",&x);
while(x!=0)
{
p=(struct node *)malloc(sizeof(struct node));
p->data=x;
p->next=NULL;
if(head==NULL)
head=tail=p;
else
{
tail->next=p;
tail=p;
}
printf("\n请输入一个整数:\n");
scanf("%d",&x);
}
return(head);
}

struct node *unite(struct node *a,struct node *b)
{
struct node *ha;
ha=head_a;
while(ha->next!=NULL)
ha=ha->next;
ha->next=head;
return(a);
}

void sortf()
{
struct node *p;
int temp;
L: p=head_a;
p=head_a;
while(p->next!=NULL)
{
if(p->data>p->next->data)
{
temp=p->data;
p->data=p->next->data;
p->next->data=temp;
}
p=p->next;
}

p=head_a;
while(p->next!=NULL)
{
if(p->data>p->next->data)
{
goto L;
}
p=p->next;
}
// return(a);
}

void main()
{
struct node *A,*B,*C,*LA;
printf("\n请输链表A的值,以0结束:\n");
LA=head_a=A=create();
printf("\n请输链表B的值,以0结束:\n");
B=create();
/////////////////////////////
printf("\n链表A的值:\n");
while(LA!=NULL)
{
printf("%d\t",LA->data);
LA=LA->next;
}

C=unite(A,B);

printf("\n链表B的值:\n");
printf("\n");
while(B!=NULL)
{
printf("%d\t",B->data);
B=B->next;
}
printf("\n链表C的值:\n");
printf("\n");

LA=head_a;
while(LA!=NULL)
{
printf("%d\t",LA->data);
LA=LA->next;
}
printf("\n");

printf("\n经过排序后链表C的值:\n");
printf("\n");

sortf();
LA=head_a;
while(LA!=NULL)
{
printf("%d\t",LA->data);
LA=LA->next;
}
printf("\n");
}

几经波折才算搞清楚..弄出来了!!!!!!!!!!!!!!!

热心网友 时间:2022-06-16 22:01

将A表第一个数据的head指针赋值给C表head指针
将A表中最后一个数据的next指针转为指向B表第一个数据的head指针
然后将C表重新排列即可```
这样就不需要重新开辟新的内存空间

热心网友 时间:2022-06-16 22:02

其实思想是很清晰的,但是这玩意要是写起来就费劲了

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com