按值插入有序单链表,使之依旧有序
又是考试系统不能通过 诶
题目内容:
给定一个递增整数序列和某个整数M,构造出此递增序列的链表,
并创建以M为值的新结点插入到链表中,使其结果序列依然保持递增顺序。
输入描述
每个输入包含一个测试用例,第1行 长度N(任意 long int范围内的正整数)和 待插入的整数M;
第2行 N个递增的整数代表原递增数列。
输出描述
根据此递增数列,构造出此递增链表,然后将M插入到链表中,输出插入后的链表对应的数列。
数字间隔一个空格,但末尾不能有空格。
输入样例
6 2
-10 -3 1 5 9 30
输出样例
-10 -3 1 2 5 9 30
题目内容:
给定一个递增整数序列和某个整数M,构造出此递增序列的链表,
并创建以M为值的新结点插入到链表中,使其结果序列依然保持递增顺序。
输入描述
每个输入包含一个测试用例,第1行 长度N(任意 long int范围内的正整数)和 待插入的整数M;
第2行 N个递增的整数代表原递增数列。
输出描述
根据此递增数列,构造出此递增链表,然后将M插入到链表中,输出插入后的链表对应的数列。
数字间隔一个空格,但末尾不能有空格。
输入样例
6 2
-10 -3 1 5 9 30
输出样例
-10 -3 1 2 5 9 30
#include<stdio.h>
#include<malloc.h>
typedef struct Node
{
int data;
struct Node *next;
}Node,*LinkList;
void InsertList(LinkList *L,int m)
{
Node *t,*s;
s=*L;
while(s->next->data<m) s=s->next;
t=(Node*)malloc(sizeof(Node));
t->data=m;
t->next=s->next;
s->next=t;
}
void Print(LinkList L)
{
Node *p;
p=L->next;
while(p->next)
{
printf("%d ",p->data);
p=p->next;
}printf("%d",p->data);
}
int main()
{
LinkList L;
int i,a,m,n;
Node *last,*p;
L=(LinkList)malloc(sizeof(Node));
L->data=0;
L->next=NULL;
last=L;
//输入个数和待插入数
scanf("%d %d",&n,&m);
//输入序列
for(i=0;i<n;i++)
{
scanf("%d",&a);
p=(Node*)malloc(sizeof(Node));
p->data=a;
p->next=NULL;
last->next=p;
last=p;
}
InsertList(&L,m);
Print(L);
return 0;
}
...全文
相关推荐
实现两个有序单链表的合并
实现两个有序单链表的合并。要求:随机创建两个单链表,实现单链表的排序,再对两个有序单链表进行合并。
已知单链表L为按值递增有序的,编写算法将数据元素e插入到顺序表L中,使之仍有序
用单链表实现:已知单链表L为按值递增有序的,编写算法将数据元素e插入到顺序表L中,使之仍有序
关于有序单链表的详细设计
实现有序单链表的定义,建立,遍历,插入,删除以及两个有序单链表的合并; 本资源包括需求分析,概要设计,详细设计,调试分析,测试结果和源代码
有序的单链表中插入和删除
有序的单链表中插入和删除,插入一个数后仍然保持表按小到大的顺序排列
java实现向有序数组中插入一个元素实例
本篇文章主要介绍了java实现向有序数组中插入一个元素实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下


