问题遇到的现象和发生背景
用代码块功能插入代码,请勿粘贴截图
我想要达到的结果
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
struct Num
{
int num;
struct Num *next;
};
int input_Num(struct Num *num)
{
printf("请输入一个数字: ");
scanf("%d", &num->num);
return num->num;
}
void insert_Num(struct Num **n)
{
struct Num *num;
struct Num *ptr;
struct Num *current;
int temp;
current = *n;
num = (struct Num *)malloc(sizeof(struct Num));
if (num == NULL)
{
printf("内存分配失败...\n");
exit(1);
}
temp = input_Num(num);
if (current != NULL)
{
while (current->num < temp && current != NULL)
{
ptr = current;
current = current->next;
}
num->next = current;
ptr->next = num;
}
else
{
num->next = NULL;
current = num;
}
}
void printRecord(struct Num *n)
{
struct Num *record;
record = n;
while (record != NULL)
{
printf("%d ", record->num);
record = record -> next;
}
}
void releaseRecord(struct Num **n)
{
struct Num *temp;
while (*n != NULL)
{
temp = *n;
*n = (*n)->next;
free(temp);
}
}
int main(void)
{
struct Num *n = NULL;
char ch;
while (1)
{
printf("是否录入数据(Y/N): ");
do
{
ch = getchar();
} while (ch != 'Y' && ch != 'N');
if (ch == 'N')
{
break;
}
else
{
insert_Num(&n);
}
}
printRecord(n);
releaseRecord(&n);
return 0;
}