标题:链表问题设线性表的数据元素都为整数,存放在顺序表 S 中且递增有序。设计算 ...
只看楼主
漠河C
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2017-9-11
结帖率:50%
已结贴  问题点数:20 回复次数:3 
链表问题设线性表的数据元素都为整数,存放在顺序表 S 中且递增有序。设计算法,将 x 插入到顺序表 S 的适当位置上,以保持线性表的有序性。
谢谢
#include <stdio.h>
#include <stdlib.h>
void Insertlist(struct sqlist*l,int x ,int i);
#define size  100
struct sqlist
{
    int data[size];
    int length;
};
void main()
{    struct sqlist *s;
    int t,n,i,x;
    s=(struct sqlist*)malloc(sizeof(struct sqlist));
    s->length=0;
    printf("请输入线性表的大小:");
    scanf("%d",&n);
    printf("请输入原线性表有序递增的数据元素:\n");
    for(i=0;i<n;i++)
    {
        scanf("%d",&t);
    }
    printf("请输入一个数字:");
    scanf("%d",&x);
    Insertlist(s,x,i);
    printf("插入元素后的线性表数据元素的顺序为:");
    for(i=0;i<s->data[i];i++)
    {
        printf("%d",s->data[i]);
    }
}
void Insertlist( sqlist l,int x ,int i)
{
    if(i<0||i>l-length) exit(1);
    if(l->length>=100)   exit(1);
    for(i=0;i<l.length;i++)
    {
       if(x<=l.elem[i])
       {
        for(q=l.length;q>=i;q++)
            l.elem[q+1]=l.elem[q];
            l.elem[i]=x;
            break;
       }
      else
      {
         l.elem[l.length+1]=x;
         break;
     }
    }
    L.length++;
}
搜索更多相关主题的帖子: 线性表 顺序表 有序 int length 
2017-09-11 19:55
虾米小小小
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:30
专家分:135
注 册:2017-7-22
得分:20 
就在你的基础上改了......
-------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
void Insertlist(struct sqlist*l,int x ,int i);
#define size  100
struct sqlist
{
    int data[size];
    int length;
};
int main()
{   
    struct sqlist *s;
    int t,n,i,x;
    s=(struct sqlist*)malloc(sizeof(struct sqlist));
    printf("请输入线性表的大小:");
    scanf("%d",&n);
    s->length=n;
    printf("请输入原线性表有序递增的数据元素:\n");
    for(i=0;i<n;i++)
    {
        scanf("%d",&t);
        s->data[i] = t;
    }
    printf("请输入一个数字:");
    scanf("%d",&x);
    Insertlist(s,x,i);
    printf("插入元素后的线性表数据元素的顺序为:");
    for(i=0;i<s->length;i++)
    {
        printf("%d ",s->data[i]);
    }
}
void Insertlist( sqlist *l,int x ,int i)
{
    int j,last;
    if(i<0||i>l->length) exit(1);
    if(l->length>=100)   exit(1);
    for(j=0;j<l->length;j++)
    {
       if(x>l->data[j])
       {
           continue;
       }
      else
      {
          last=i;
         while(last>j){
             l->data[last] = l->data[last-1];
             last--;   
         }
         l->data[j]=x;
         break;
     }
    }
    l->length++;
}
2017-09-12 19:50
漠河C
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2017-9-11
得分:0 
回复 2楼 虾米小小小
好的。
2017-09-12 21:39
HJU
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2020-2-11
得分:0 
想问一下 else
      {
          last=i;
         while(i>j){
             l->data[last] = l->data[last-1];
             last--;   
         }
         l->data[j]=x;
         break;
这段是什么意思,i是怎么变化的,为什么放入last里,感谢
2020-02-11 17:20



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-480626-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.711132 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved