纳米浩、 发表于 2021-9-21 16:48:33

一个顺序存储结构的简单线性表之不改变原有顺序的数字插入问题

怎么在线性表原有的几个从小到大排列的数字中插入一个数字,而且不改变原有顺序呢?{:5_94:}
以下是我的代码,可以指出哪里有问题,比如说while那里,该怎么改?{:5_92:}
#include<stdio.h>
#define MaxSize 20
typedef int datatype;
typedef struct
{
        datatype data;
          int last;
}sqlist;


int insertlistsq(int i,datatype x,sqlist *p)
{

        int j;
        if((*p).last>MaxSize)
        {printf("溢出错误!\n");
          return(0);
                    
                }
               
               
                else if((i<1)||(i>p->last+1))
                {
                        printf("该位置不存在!\n");
                       
                        return(0);
                       
                }

       else
       {for(j=p->last-1;j>=i-1;j--)
      
         p->data=p->data;
         p->data=x;
         p->last=p->last+1;
         return(1);
         
         
         
         
               
           }



}
int main()
{

       
   
   int m,c,a,h=0;
   datatype z=5;
   
   sqlist o={0,1,2,3,4,6,7,8,9,10};
       o.last=10;
      printf("打印现有原线性表元素\n");
   for(a=0;a<o.last;a++)
   printf("%3d\n",o.data);
   while(z>o.data)
             {
               h=h+1;
               }
                  
                   m=h+1;      
   
      c==insertlistsq(m,z,&o);
      if(c==0)
      printf("error");
      else
      {
                printf("打印插入后的线性表\n");
                for(a=0;a<o.last;a++)
                printf("%3d\n",o.data);
                }
   
   
   


}

纳米浩、 发表于 2021-9-21 16:49:26

求助各位大神指点一下小弟,小弟刚学数据结构{:5_111:}

月末 发表于 2021-9-21 19:00:53

在要插入的位置插入,之后的数据都挪后一位

月末 发表于 2021-9-21 19:07:36

for(j=p.last;j>i;j++)
{ p.data=p.data; }
p.data=x;
p.last++;
页: [1]
查看完整版本: 一个顺序存储结构的简单线性表之不改变原有顺序的数字插入问题