gpt4 book ai didi

c - 排序链表最简单的方法

转载 作者:行者123 更新时间:2023-11-30 17:04:08 25 4
gpt4 key购买 nike

我正在尝试为链表编写非常基本的排序方法。我遇到了未处理的异常。我犯了什么错误?这是我的代码:-

   struct LinkedNode// structure for linked list
{
int data;
struct LinkedNode *next;
}*start = NULL;

以下函数创建一个链接列表

 void CreateLinkedList()
{
LinkedNode *newNode, *current;
printf("enter 5 numbers to create linked list\n");
for(int i=0; i<5; i++)
{
newNode = (struct LinkedNode *)malloc(sizeof(LinkedNode));
scanf("%d", &newNode->data);
newNode->next = NULL;
if(start == NULL)
{
start = newNode;
current = newNode;
}
else
{
current->next = newNode;
current = newNode;
}
}
}

以下函数用于对链表节点进行排序

 void SortLinkedList()
{
struct LinkedNode *node=NULL, *temp = NULL;
int tempvar;//temp variable to store node data
node = start;
temp = node->next;//temp node to hold node data and next link
while(node != NULL && node->next != NULL)
{
for(int j=0; j<5; j++)//value 5 because I am taking only 5 nodes
{
if(node->data > temp->data)//swap node data
{
tempvar = node->data;
node->data = temp->data;
temp->data = tempvar;
}
temp = temp->next;
}
node = node->next;
}
}

最佳答案

试试这个代码

void SortLinkedList()
{
struct LinkedNode *node=NULL, *temp = NULL;
int tempvar;//temp variable to store node data
node = start;
//temp = node;//temp node to hold node data and next link
while(node != NULL)
{
temp=node;
while (temp->next !=NULL)//travel till the second last element
{
if(temp->data > temp->next->data)// compare the data of the nodes
{
tempvar = temp->data;
temp->data = temp->next->data;// swap the data
temp->next->data = tempvar;
}
temp = temp->next; // move to the next element
}
node = node->next; // move to the next node
}
}

1 - 外部 while 循环用于对链表进行排序所需的传递总数。

2-在第二个 while 循环中,我们实际上是在比较要排序的节点的数据

关于c - 排序链表最简单的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35914574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com