다음은 직접 만들려고 시도한 프로그램입니다. 중간에 노드를 입력하여 정렬 된 링크 목록을 출력으로 제공하고 싶습니다. 하지만 작동하지 않습니다. 그래서 친절하게도 완벽한 결과물을 얻을 수있게 도와 줘요. 그리고이 코드에서 잘못된 점을 이해하게 하죠?정렬 된 링크 된 목록을 만들기 위해 중간에 노드를 입력하십시오
#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;
}
}
문제점은 무엇입니까? – Krumia
정렬 방식으로 링크 목록을 가져 오지 않습니다. – Muskaan