#include<stdio.h>
#include<stdlib.h>
int count=1;
typedef int DataType;
typedef struct Node{
DataType data;
struct Node *link;
}LinkList;
LinkList *Create_List(){
LinkList *head,*p,*q;
int x,flag=1;
head=(LinkList*)malloc(sizeof(LinkList));//为头结点分配存储空间
head->link=NULL;
q=head;
while(flag)
{
scanf("%d",&x);
if(x!=-1)
{
p=(LinkList*)malloc(sizeof(LinkList));
p->data=x;
q->link=p;
q=p;
count++;
}
else {
flag=0;
q->link=NULL;
}
}
return head;
}
main(void){
LinkList *a,*b,*c,*e,*h,*t;
int i,min,count=1,j;
a=Create_List();
h=a;
c=a;
a=a->link;
while(a!=NULL){
e=a;
a=a->link;
}
printf("\n");
b=Create_List();
e->link=b->link;
c=c->link;
while(c!=NULL)
{
printf("%d\n",c->data);
c=c->link;
}
c=h->link;
for(i=1;i<count;i++){
for(j=0;j<count-i;j++){
t=c->link;
if((c->data)<(t->data)){
min=c->data;
t->data=c->data;
c->data=min;
}
c=c->link;
}
}
h=h->link;
while(h!=NULL)
{
printf("%d",h->data);
h=h->link;
}
printf("\n");
}

合并两个有序链表后,冒泡逆序排序,不知道为何没逆序
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- qzjhjxj 2021-09-30 10:26关注
已经定义了全局变量 count ,在主函数里又定义局部变量 count, 其他问题见注释,按题主的思路修改,供参考:
#include<stdio.h> #include<stdlib.h> int count = 0;//修改 typedef int DataType; typedef struct Node { DataType data; struct Node* link; }LinkList; LinkList* Create_List() { LinkList* head, * p, * q; int x, flag = 1; head = (LinkList*)malloc(sizeof(LinkList));//为头结点分配存储空间 head->link = NULL; q = head; while (flag) { scanf("%d", &x); if (x != -1) { p = (LinkList*)malloc(sizeof(LinkList)); p->data = x; q->link = p; q = p; count++; } else { flag = 0; q->link = NULL; } } return head; } int main(void) { LinkList* a, * b, * c, * e, * h, * t; int i, min, j; //count = 1,修改 a = Create_List(); h = a; c = a; a = a->link; while (a != NULL) { e = a; a = a->link; } printf("\n"); b = Create_List(); e->link = b->link; c = c->link; while (c != NULL) { printf("%d\n", c->data); c = c->link; } c = h->link; for (i = 0; i < count - 1; i++) {//修改 t = c->link;//修改 for (j = 0; j < count - i - 1; j++) {//修改 if ((c->data) < (t->data)) { min = c->data; c->data = t->data;//t->data = c->data;修改 t->data = min; //c->data = min;修改 } t = t->link;//修改 } c = c->link;//修改 } h = h->link; while (h != NULL) { printf("%d ", h->data); h = h->link; } printf("\n"); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用