StarZZZZ5 2021-07-15 21:27 采纳率: 100%
浏览 28
已采纳

我的代码到那就不运行了,怎么回事?

/*
有一个带头结点的单链表L,设计一个算法使其递增有序
分析:
我们可以采用冒泡排序对其操作,使其递增有序,时间复杂度为O(n^2)。
*/
#include<stdio.h>
#include<stdlib.h>
typedef struct LNode
{
int value;
struct LNode *next;
}LNode,*Linklist;

Linklist list_TailInsert(Linklist &L)
{ int value;
L = (Linklist)malloc(sizeof(LNode));
LNode *head = L,*rear = L;
head->next = NULL;
head->value = NULL;
printf("请输入链表一个结点的值,输入9999代表结束:");
scanf("%d",&value);
while(value != 9999)
{
LNode *s;
s = (Linklist)malloc(sizeof(LNode));
s->value = value;
s->next=NULL;
rear->next = s;
rear = s;
scanf("%d",&value);
}
rear->next = NULL;
}
void Display(Linklist L)
{
LNode *p = L->next ;
while(p != NULL)
{
printf("%d ",p->value);
p = p->next;
}
printf("\n");
}
void bubbleSort(Linklist &L)//冒泡排序
{
LNode *pre = L,*p = L->next,*q = p->next;
int flag = 0;//排序标志,如果产生过变动flag = 1
int count = 0;//记录链表长度
while(p != NULL)
{
count++;
p = p->next;
}
printf("count = %d\n",count);
p = L->next;//切记,在计算链表长度后一定要重新设定p的指针
for(int i = 0;i < count;i++)
{ flag = 0;
pre = p;
p = q;
q = q->next;
while(p != NULL)
{
if(p->value < pre->value)
{ printf("%d->%d ",p->value,pre->value);
p->next = pre;
L->next = p;
pre->next = q;
p=q;
q=q->next;
flag = 1;
printf("flag=%d\n",flag);
}
else
{
pre = p;
p = q;
q = q->next;
}
}
if(flag = 0)break;//我的代码到这就不运行了,怎么回事???
pre = L;
p = L->next;
q = p->next;
}
}
int main()
{
Linklist L1;
list_TailInsert(L1);
Display(L1);
bubbleSort(L1);
Display(L1);

return 0;
}

  • 写回答

2条回答 默认 最新

  • StarZZZZ5 2021-07-16 08:26
    关注

    /*
    有一个带头结点的单链表L,设计一个算法使其递增有序
    分析:
    我们可以采用冒泡排序对其操作,使其递增有序,时间复杂度为O(n^2)。
    */
    #include<stdio.h>
    #include<stdlib.h>
    typedef struct LNode
    {
    int value;
    struct LNode *next;
    }LNode,*Linklist;

    Linklist list_TailInsert(Linklist &L)
    { int value;
    L = (Linklist)malloc(sizeof(LNode));
    LNode *head = L,*rear = L;
    head->next = NULL;
    head->value = NULL;
    printf("请输入链表一个结点的值,输入9999代表结束:");
    scanf("%d",&value);
    while(value != 9999)
    {
    LNode *s;
    s = (Linklist)malloc(sizeof(LNode));
    s->value = value;
    s->next=NULL;
    rear->next = s;
    rear = s;
    scanf("%d",&value);
    }
    rear->next = NULL;
    }
    void Display(Linklist L)
    {
    LNode *p = L->next ;
    while(p != NULL)
    {
    printf("%d ",p->value);
    p = p->next;
    }
    printf("\n");
    }
    void bubbleSort(Linklist &L)//冒泡排序
    {
    LNode *pre = L,*p = L->next,*q;
    int flag = 0;//排序标志,如果产生过变动flag = 1
    int count = 0;//记录链表长度
    while(p != NULL)
    {
    count++;
    p = p->next;
    }
    p = L->next;//切记,在计算链表长度后一定要重新设定p的指针
    for(int i = 0;i < count;i++)
    { flag = 0;
    while(p->next != NULL)
    {
    if(p->next->value < p->value)//前者大于后者,则需要交换
    { q = p->next->next; //q指向下一个节点,防止断链
    pre->next = p->next;
    p->next->next = p;
    pre = p->next;
    p->next = q;
    flag = 1;
    }
    else
    {
    pre = p;
    p = p->next;
    }
    }
    if(flag == 0)break;
    pre = L;
    p = L->next;

    }
    

    }
    int main()
    {
    Linklist L1;
    list_TailInsert(L1);
    Display(L1);
    bubbleSort(L1);
    Display(L1);

    return 0;
    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已采纳回答 7月16日
  • 创建了问题 7月15日

悬赏问题

  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)