题目:输入两个有序数列,设计算法将二者合并成一个有序序列;
思路:以升序数列为例。由于输入数列中元素个数不确定,将采用链表存储数据;声明链表结构体;采用尾插法创建链表;通过指针逐一比较两链表元素大小,将较小元素插入到新链表表尾,该操作直至有一方指针为空;将另一链表剩余元素全部连接到新链表表尾;输出新链表;释放新链表和两个原链表头指针。
存在问题:之所以采用链表方法,是因为对没有明确输入规模的程序题感到棘手,还没学到比较简单的处理方法;也不擅长终止循环scanf的输入;尤其是两者结合的问题,感到头大!恳切希望有大佬指点一番。
代码:
#include<stdio.h>
#include <stdlib.h>
typedef struct node{
int data;
struct node *next;
}node;
//尾插法创建链表
void creatlinklist(node *l){
node *p,*r;
int i=1,j;
r=l;
printf("请输入有序数列(升序):");
while(i!=0){
scanf(