问答题 设计一个算法,将x插入到一个有序(从小到大排序)的线性表(顺序存储结构)的适当位置上,以保持线性表的有序性。
【正确答案】算法由主函数和插入、输出三个函数组成。
   程序如下:
   #include<stdio.h>
   #define MAXLEN 20
   void insertsqlist(int x,int s[],int *np)/*插入结点x到有序表中*/
   {
   int n;
   n=*np;    /*有序表长度*/
   if(n=0)
     s[n]=x;
   else
   {
     while(s[n-1]>x)    /*从后向前移动结点,确定x的插入位置*/
   {
     s[n]=s[n-1];
     n=n-1:
   }
     s[n]=x;    /*插入x*/
   }
   ++(*np);    /*有序表长度加1*/
   }
   void print(int S[],int*np)    /*输出有序表各结点*/
   {
   int i,n;
   n=*np;
   for(i=0;i<n;i++)
   {
     printf("/%d",s[i]);
   }
   printf("\n");
   }
   main()    /*主函数*/
   int a[MAXLEN]={11,33,55,66,77,88,99};
   int c,$e;
   e=30;    /*插入30*/
   *e=7;
   print(a,e);    /*插入前输出有序表*/
   insertsqlist(c,a,e);    /*插入一个结点到有序表*/
   print(a,e);    /*插入后输出有序表*/
   }
   输出结果为:
   11 33 55 66 77 88 99
   11 30 33 55 66 77 88 99
【答案解析】