关于单链表的插入问题,尝试了很多次,不清楚问题出在哪,希望大牛能够帮助我指出代码中存在的问题,感激万分。
#include<stdio.h>
#include<stdlib.h>
struct Link
{
int num;
struct Link *next;
};
void getInput(struct Link *num)//函数1 读入数据
{
printf("input a number: ");
scanf("%d", &num->num);
}
void rank_num(struct Link **link, struct Link *num)//函数2 排序插入
{
struct Link *temp;
struct Link *current;
current = *link;
while(num >= current->num || current->next != NULL)
{
if(current->next != NULL)
{
temp = current;
current = current->next;
}
}
if(current->next == NULL)
{
current->next = num;
num->next = NULL;
}
else
{
temp->next = num;
num->next = current;
}
}
void printLink(struct Link *link)//函数3 打印结果
{
while(link->next != NULL)
{
printf("%d ", link->num);
link = link->next;
}
return;
}
void releaseLink(struct Link **link)//函数4 释放存储空间
{
struct Link *temp;
while(*link != NULL)
{
temp = *link;
*link = (*link)->next;
free(temp);
}
}
int main()//主函数 main
{
struct Link *link = NULL;
struct Link *num;
num = (struct Link*)malloc(sizeof(struct Link));
for(int i=0; i<3; i++)
{
printf("请输入数据\n");
getInput(num);
if(link != NULL)
{
rank_num(&link, num);
}
else
{
link = num;
num->next = NULL;
}
}
printLink(link);
releaseLink(&link);
return 0;
}