| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 615 人关注过本帖
标题:顺序表的存储
只看楼主 加入收藏
lyjf110
Rank: 2
来 自:那梭
等 级:论坛游民
帖 子:83
专家分:16
注 册:2009-4-16
结帖率:96.3%
收藏
已结贴  问题点数:20 回复次数:9 
顺序表的存储
请大家帮忙写一个程序,要求如下:
设一顺序表中元素值递增有序。写一算法,将元素x插到表中的位置,并保持顺序表的有序性。
谢谢
搜索更多相关主题的帖子: 顺序 
2009-10-23 17:29
sen_lin
Rank: 6Rank: 6
等 级:侠之大者
威 望:3
帖 子:114
专家分:436
注 册:2009-3-24
收藏
得分:20 
用折半法查找到x应插入的位置,再将其后的原顺序表中的元素向后移动一个位置。
2009-10-23 17:42
玩出来的代码
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河南新乡
等 级:贵宾
威 望:11
帖 子:742
专家分:2989
注 册:2009-10-12
收藏
得分:0 
#include<stdio.h>
#include<conio.h>
#define MAX 20
typedef struct sqnode
{
    int a[MAX];
    int len;
}sqlist;
void main()
{
    int i,n,j;
    sqlist h;
    printf("输入数组的个数");
    scanf("%d",&h.len);
    for(i=0;i<h.len;i++)        //数组赋值
      h.a[i]=i*2+2;
     for(i=0;i<h.len;i++)
       printf("%d ",h.a[i]);       //输出数组
       printf("要插入的数:");
       scanf("%d",&n);
       i=0;
       while(h.a[i]<n)
         i++;                         //插入元素
        for(j=h.len-1;j>=i;j--)
           h.a[j+1]=h.a[j];
           h.a[i]=n;
 
        for(i=0;i<h.len+1;i++)         //输出数组
       printf("%d ",h.a[i]);
       getch();
   }
 
 
写的格式不好,就这样看吧!

离恨恰如春草,更行更远还生。
2009-10-23 18:16
lyjf110
Rank: 2
来 自:那梭
等 级:论坛游民
帖 子:83
专家分:16
注 册:2009-4-16
收藏
得分:0 
回复 3楼 玩出来的代码
不好意思,有些地方不明白,请教一下。首先是:"conio.h"是什么,这个没用过,不太懂,
还有h.a[i]=i*2+2; 看不太明白,为什么这样写啊?

2009-10-24 13:01
lyjf110
Rank: 2
来 自:那梭
等 级:论坛游民
帖 子:83
专家分:16
注 册:2009-4-16
收藏
得分:0 
我希望程序在开始的时候可以自己输入数组,所以把上面的程序做了点改动,可是在编译的时候没有出现错误,但运行时确出现了错误,请大家帮忙找一下错在哪。红色为修改的地方,蓝色的是我自己加的初始化数组的函数。补充一点就是,运行的时候出现的是内存的错误提示。
还有就是画线部分我还没怎么看懂。

#define MAX 20
typedef struct sqnode
{
    int a[MAX];
    int len;
}sqlist;

void init(sqlist *h) //初始化数组函数
{
    int k;
    for(k=0;k<MAX;k++)
       h->a[k]=0;
    h->len=0;
}

void main()
{
    int i,n,j;
    sqlist h;
    init(&h);
    printf("输入数组的个数:");
    scanf("%d",&h.len);
    printf("请输入数组的各个元素值:");
    for(i=0;i<h.len;i++)       //数组赋值
        scanf("%d",h.a[i]);
     for(i=0;i<h.len;i++)
       printf("%d ",h.a[i]);       //输出数组
       printf("要插入的数:");
       scanf("%d",&n);
       i=0;
       while(h.a[i]<n)
         i++;                         //插入元素
        for(j=h.len-1;j>=i;j--)
           h.a[j+1]=h.a[j];
           h.a[i]=n;

        for(i=0;i<h.len+1;i++)         //输出数组
       printf("%d ",h.a[i]);
       getch();
   }
2009-10-24 13:31
如满月
Rank: 2
等 级:论坛游民
帖 子:25
专家分:30
注 册:2009-4-6
收藏
得分:0 
先比较,找到位置后,从后向前移。
2009-10-24 15:37
玩出来的代码
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河南新乡
等 级:贵宾
威 望:11
帖 子:742
专家分:2989
注 册:2009-10-12
收藏
得分:0 
#define MAX 20  
typedef struct sqnode  
{  
    int a[MAX];  
    int len;  
}sqlist;  
 
void init(sqlist *h)
{
    int k;
    for(k=0;k<MAX;k++)
       h->a[k]=0;
    h->len=0;
}
 
void main()  
{  
    int i,n,j;  
    sqlist h;  
    init(&h);
    printf("输入数组的个数:");  
    scanf("%d",&h.len);
    printf("请输入数组的各个元素值:");
    for(i=0;i<h.len;i++)
        scanf("%d",&h.a[i]);             //这里你写错了,&
     for(i=0;i<h.len;i++)  
       printf("%d ",h.a[i]);
       printf("要插入的数:");  
       scanf("%d",&n);  
       i=0;  
       while(h.a[i]<n)            // 因为你要求数组还是按升序排,让数组中的数依次与n比较知道不小于n的书为止
         i++;
        for(j=h.len-1;j>=i;j--)   j=h.len-1表示的是数组的最后一位,功能是让数组依次后移直到j》=i;
           h.a[j+1]=h.a[j];  
           h.a[i]=n;               
 
        for(i=0;i<h.len+1;i++)
       printf("%d ",h.a[i]);  
       getch();  
   }
那个conio.h是库函数,你不用管它,以后会明白的,在TC下不加也行。

[ 本帖最后由 玩出来的代码 于 2009-10-24 16:42 编辑 ]

离恨恰如春草,更行更远还生。
2009-10-24 16:40
lyjf110
Rank: 2
来 自:那梭
等 级:论坛游民
帖 子:83
专家分:16
注 册:2009-4-16
收藏
得分:0 
非常感谢大家的帮忙,但是这个程序好像还少了一个功能,就是把还没有插入数字之前的数组也进行排序,所以还要请大家再帮这个忙,因为题目好像还有这样的要求,谢谢了。
2009-10-24 17:29
玩出来的代码
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河南新乡
等 级:贵宾
威 望:11
帖 子:742
专家分:2989
注 册:2009-10-12
收藏
得分:0 
自己看一下书,书上都有数组的排序例子的,或者BAIDU一下,选择法排序,冒泡法排序。

离恨恰如春草,更行更远还生。
2009-10-24 17:39
lyjf110
Rank: 2
来 自:那梭
等 级:论坛游民
帖 子:83
专家分:16
注 册:2009-4-16
收藏
得分:0 
啊!!!!给错分了,对不起啊
2009-10-24 20:30
快速回复:顺序表的存储
数据加载中...
 
   



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

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