| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 329 人关注过本帖
标题:数据结构顺序表求助。
只看楼主 加入收藏
on1y_rL
Rank: 1
等 级:新手上路
帖 子:5
专家分:6
注 册:2012-10-3
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
数据结构顺序表求助。
我是初学者,刚学数据结构,今天编了下顺序表的基本操作,到了插入新元素的时候有问题了,求帮助。谢谢..
代码如下:
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef int ElemType;
typedef struct
{
    ElemType data[MAXSIZE];
    int last;
}SeqList;
SeqList SeqListInit(SeqList L)
{
    L.last=0;
    return L;
}
SeqList SeqListget(SeqList L,int x)
{
    int i;
        for(i=0;i<x;i++)
    {
        scanf("%d",&L.data[i]);
        L.last++;
    }
        return L;

}
void SeqListput(SeqList L,int x)
{
    int i;
    for(i=0;i<x;i++)
    {
        printf("%3d",L.data[i]);
        if(i%8==0&&i!=0)
        printf("\n");
    }
}
int SeqListLocate(SeqList L,ElemType x)
//在顺序表L中查找第一个与x值相等的元素。若查找成功,
//则返回它在顺序表中的位序;否则,返回0
{
    int i=1;
    while(i<=L.last&&L.data[i-1]!=x)
    {
        i++;
    }
    if(i<=L.last)
    return i;
    else return 0;
}
SeqList SeqListInsert(SeqList L,int i,ElemType x)
{//在顺序表中的第 i 个位置插入元素 x
    int j;
    if(L.last==MAXSIZE)
    {
        printf("表满\n");
    }
    if(i<1||i>MAXSIZE)
    {
        printf("插入位置错\n");
        exit (0);
    }
    for(j=L.last;j>=i-1;j++)
        L.data[j+1]=L.data[j];
        L.data[i-1]=x;
        L.last++;
        return L;
}
void main()
{
    SeqList A,B;
    int i,x1,y,y1,y2,x2;
    A=SeqListInit(A);
    printf("请输入顺序表的长度:\n");
    scanf("%d",&y);
    printf("请输入顺序表的数据\n");
    A=SeqListget(A,y);
    printf("该顺序表的数据为:\n");
    SeqListput(A,y);
    printf("\n");
    printf("请输入你要查找的数:\n");
    scanf("%d",&y1);
    x1=SeqListLocate(A,y1);
    if(x1)
    printf("这个数在顺序表的位置为:%d\n",x1);
    else
    printf("这个数不在顺序表中\n");
    printf("请分别输入要插入的新元素,和它所在的位置:\n");
    scanf("%d%d",&x2,&y2);
    B=SeqListInsert(A,y2,x2);
    printf("插入新元素后的顺序表为\n:");
    SeqListput(B,B.last);
}
不能正常输出插入新元素后的顺序表,自己看不出错误。请好心人帮助...
搜索更多相关主题的帖子: return include 结构 
2012-10-07 11:39
青春无限
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江苏
等 级:贵宾
威 望:24
帖 子:3451
专家分:19340
注 册:2012-3-31
收藏
得分:7 
看看

学 会看代码…学习写程序…学会搞开发…我的目标!呵呵是不是说大话啊!!一切皆可能
2012-10-07 11:51
爱闹的娃
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:265
专家分:975
注 册:2011-10-23
收藏
得分:7 
看了看你的插入函数,下标移动出了问题.... for(j=L.last;j>=i-1;j++)这里的 j 为什么是++呢???仔细想想..........
2012-10-08 20:25
一个孩子
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:356
专家分:954
注 册:2012-10-1
收藏
得分:7 
j--吧应该

重要的不是结果,是求一个结果的过程,哪怕千难万难,当你有想要的结果时,你已走的很远
2012-10-08 21:09
一个孩子
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:356
专家分:954
注 册:2012-10-1
收藏
得分:0 
还有一个就是,你主函数中的i没有用到,可以不用。

重要的不是结果,是求一个结果的过程,哪怕千难万难,当你有想要的结果时,你已走的很远
2012-10-08 21:14
快速回复:数据结构顺序表求助。
数据加载中...
 
   



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

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