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 求帮我调试一下freefem代码
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图