gpt4 book ai didi

c - 中间输入一个节点,形成一个排序链表

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

以下是我尝试自己制作的程序。我想以排序后的链接列表作为输出的方式在中间输入一个节点。但它不起作用。所以请帮助我得到完美的输出。让我明白这段代码出了什么问题?

#include<stdio.h>
#include<stdlib.h>
typedef struct node_type
{
int roll_no;
char name[10];
float marks;
struct node_type *next;
} node;
typedef node *list;
void show_list (list);
main ()
{
list head, temp, tail;
char ch;
int n;
head = NULL;
printf ("Do you want to add?(y/n)");
scanf ("%c", &ch);
if (ch == 'y' || ch == 'Y')
{
tail = (list) malloc (sizeof (node));
printf ("Enter the value for roll number:-\n");
scanf ("%d", &(tail->roll_no));
printf ("Enter name:-\n");
scanf ("%s", tail->name);
printf ("Enter marks:-\n");
scanf ("%f", &(tail->marks));
tail->next = head;
head = tail;
printf ("Enter more data?(y/n)\n");
scanf ("\n%c", &ch);
}
while (ch == 'y' || ch == 'Y')
{
tail->next = (list) malloc (sizeof (node));
printf ("Enter the value for roll number:-\n");
scanf ("%d", &(tail->next->roll_no));
printf ("Enter name:-\n");
scanf ("%s", tail->next->name);
printf ("Enter marks:-\n");
scanf ("%f", &(tail->next->marks));
temp = tail;
printf ("Enter more data?(y/n)\n");
scanf ("\n%c", &ch);
}
while (temp->roll_no < tail->roll_no)
{
head = tail;
tail = tail->next;
temp->next = tail;
head->next = temp;
}
show_list (head);
}

void
show_list (list start)
{
while (start != NULL)
{
printf ("%d \t %s \t %f \n", start->roll_no, start->name,
start->marks);
start = start->next;
}
}

最佳答案

您的while (ch == 'y' || ch == 'Y')语句不断在列表末尾添加数据。

while (temp->roll_no < tail->roll_no)语句条件永远不会被计算,因为当您退出前一个 while 循环时,temp = tail 。考虑一下你的算法,然后再试一次。

提示:

  1. 对代码进行分段
  2. 创建一个创建节点的函数 node *createNode()并返回一个指向它的指针。
  3. 创建另一个函数 void insertNode( node * start, node *newNode)

然后,您可以将函数分隔为

while( 1 ) {
/* <
code that checks if you want to continue
and breaks out of the loop otherwise
>*/

insertNode(head, createNode())
}

你就完成了。

您已经拥有 createNode()差不多完成了。只需在另一项上多做一点工作即可。

关于c - 中间输入一个节点,形成一个排序链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24730045/

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