C语言题目:插入后自动排序(掌握用穷举法进行比较、交换)把一个整数插入到按由小到大排列的数列中,插入后仍然保持由小到大的顺序排列.要求:用数据指针.请写细致 我使用DEV C++6.0 由
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/28 16:07:23
![C语言题目:插入后自动排序(掌握用穷举法进行比较、交换)把一个整数插入到按由小到大排列的数列中,插入后仍然保持由小到大的顺序排列.要求:用数据指针.请写细致 我使用DEV C++6.0 由](/uploads/image/z/11523815-71-5.jpg?t=C%E8%AF%AD%E8%A8%80%E9%A2%98%E7%9B%AE%EF%BC%9A%E6%8F%92%E5%85%A5%E5%90%8E%E8%87%AA%E5%8A%A8%E6%8E%92%E5%BA%8F%EF%BC%88%E6%8E%8C%E6%8F%A1%E7%94%A8%E7%A9%B7%E4%B8%BE%E6%B3%95%E8%BF%9B%E8%A1%8C%E6%AF%94%E8%BE%83%E3%80%81%E4%BA%A4%E6%8D%A2%EF%BC%89%E6%8A%8A%E4%B8%80%E4%B8%AA%E6%95%B4%E6%95%B0%E6%8F%92%E5%85%A5%E5%88%B0%E6%8C%89%E7%94%B1%E5%B0%8F%E5%88%B0%E5%A4%A7%E6%8E%92%E5%88%97%E7%9A%84%E6%95%B0%E5%88%97%E4%B8%AD%2C%E6%8F%92%E5%85%A5%E5%90%8E%E4%BB%8D%E7%84%B6%E4%BF%9D%E6%8C%81%E7%94%B1%E5%B0%8F%E5%88%B0%E5%A4%A7%E7%9A%84%E9%A1%BA%E5%BA%8F%E6%8E%92%E5%88%97.%E8%A6%81%E6%B1%82%EF%BC%9A%E7%94%A8%E6%95%B0%E6%8D%AE%E6%8C%87%E9%92%88.%E8%AF%B7%E5%86%99%E7%BB%86%E8%87%B4+%E6%88%91%E4%BD%BF%E7%94%A8DEV+C%2B%2B6.0+%E7%94%B1)
C语言题目:插入后自动排序(掌握用穷举法进行比较、交换)把一个整数插入到按由小到大排列的数列中,插入后仍然保持由小到大的顺序排列.要求:用数据指针.请写细致 我使用DEV C++6.0 由
C语言题目:插入后自动排序(掌握用穷举法进行比较、交换)
把一个整数插入到按由小到大排列的数列中,插入后仍然保持由小到大的顺序排列.
要求:用数据指针.
请写细致
我使用DEV C++6.0
由小到大的数列最好是手动输入后排序的
C语言题目:插入后自动排序(掌握用穷举法进行比较、交换)把一个整数插入到按由小到大排列的数列中,插入后仍然保持由小到大的顺序排列.要求:用数据指针.请写细致 我使用DEV C++6.0 由
输入 1 4 3 8 9 2
输出 1 2 3 4 8 9
可以接受输入,但是写死了只能输入6个数字
下面是代码:
#include <stdio.h>
#include <stdlib.h>
/*
把一个整数插入到按由小到大排列的数列中,插入后仍然保持由小到大的顺序排列.
要求:用数据指针.
*/
typedef struct _List {
\x09int value;
\x09struct _List *next;
} List;
void insertList( List ** l ,int v)
{
\x09if( *l==NULL)/*输入链表为空*/
\x09{
\x09\x09*l = malloc(sizeof(List));
\x09\x09memset(*l,0,sizeof(List) );
\x09\x09(*l)->value = v;
\x09}
\x09else
\x09{
\x09\x09List *tmp=*l,*next,*p,*prev=NULL;
\x09\x09while(tmp)
\x09\x09{
\x09\x09\x09next = tmp->next;
\x09\x09\x09if( (!next && tmp->value < v ) || (next && tmp->value<v && next->value > v ) )/*输入值需要插入到当前遍历节点之后*/
\x09\x09\x09{
\x09\x09\x09\x09p= malloc(sizeof(List));
\x09\x09\x09\x09memset(p,0,sizeof(List) );
\x09\x09\x09\x09p->value = v;
\x09\x09\x09\x09tmp->next = p;
\x09\x09\x09\x09p->next = next;
\x09\x09\x09\x09return;
\x09\x09\x09}
\x09\x09\x09else if (tmp->value>v )/*输入值需要插入到当前遍历节点之前*/
\x09\x09\x09{
\x09\x09\x09\x09p= malloc(sizeof(List));
\x09\x09\x09\x09memset(p,0,sizeof(List) );
\x09\x09\x09\x09p->value = v;
\x09\x09\x09\x09if(!prev)
\x09\x09\x09\x09{
\x09\x09\x09\x09\x09p->next = tmp;
\x09\x09\x09\x09\x09*l = p;
\x09\x09\x09\x09\x09return;
\x09\x09\x09\x09}
\x09\x09\x09\x09else
\x09\x09\x09\x09{
\x09\x09\x09\x09\x09prev->next = p;
\x09\x09\x09\x09\x09p->next = tmp;
\x09\x09\x09\x09\x09return;
\x09\x09\x09\x09}
\x09\x09\x09}
\x09\x09\x09else
\x09\x09\x09{
\x09\x09\x09\x09prev = tmp;
\x09\x09\x09\x09tmp = next;
\x09\x09\x09}
\x09\x09}
\x09}
\x09return;
}
int main()
{
\x09int input [6] ;
\x09/*1 4 3 8 9 2*/
\x09List * l = NULL,*tmp;
\x09int i;
INPUT:\x09printf("pls input 6 number:");
\x09i = scanf("%d %d %d %d %d %d",input,input+1,input+2,input+3,input+4,input+5);
\x09if(i!=6)
\x09\x09goto INPUT;
\x09
\x09for(i=0;i<6;++i)
\x09\x09insertList(&l,input[i]);
\x09\x09
\x09tmp = l;
\x09while(tmp)
\x09{
\x09\x09printf("%d ",tmp->value);
\x09\x09tmp = tmp->next;
\x09}
\x09printf("\n");
\x09return 0;
}