| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3026 人关注过本帖
标题:关于顺序表插入的问题
只看楼主 加入收藏
拔D无情
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2016-3-20
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:2 
关于顺序表插入的问题
我编写了下面的程序,想建立一个顺序表,并且在i位置前插入元素e,i和e全由键盘输入,并输出插入后的顺序表及表长。
但是程序虽然能运行,结果却有问题,例如我创建表长5的顺序表11 33 44 55 66,然后想在位置2前插入22,但结果却是11 400 33 44 55 66
请问哪里出错了,希望大神斧正!!
#include<stdio.h>
#include<malloc.h>
#define LIST_INIT_SIZE 100
#define LISTCREMENT 10
#define OK 1
#define OWERFLOW -2
typedef int ElemType;
typedef struct{
    ElemType *elem;
    int length;
    int listsize;
}Sqlist;
void InitList(Sqlist&L)
{
    L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
    if(!L.elem) printf("overflow");
    L.length = 0;
    L.listsize = LIST_INIT_SIZE;
}
void CreateList(Sqlist&L)
{
    int i;
    printf("请输入线性表元素的个数\n");
    scanf("%d",&L.length);
    printf("请输入元素\n");
    for(i=1;i<=L.length;i++)
    {
        scanf("%d",&L.elem[i-1]);
    }
    printf("线性表的长度为:%d\n线性表的元素为:",L.length);
    for(i=1;i<=L.length;i++)
    {
        printf("%d ",L.elem[i-1]);
    }
    printf("\n");
}
void Print(Sqlist &L)
{
    int i;
    for(i=0;i<L.length;i++)
        printf("%d ",*(L.elem+i));
    printf("\n长度为:%d\n\n",L.length);
}
void ListInsert(Sqlist&L)
{
    int i,e;
    printf("请输入i和e的值:\n");
    scanf("%d,%d",&i,&e);
    if(i<1||i>L.length+1)
    printf("插入位置不存在");
    if(L.length>=L.listsize){
        ElemType *newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTCREMENT)*sizeof(ElemType));
        if(!newbase)
        printf("overflow");
        L.elem=newbase;
        L.listsize+=LISTCREMENT;
    }
    int j;
    for(j=L.length;j>=i;j--)
            L.elem[j]=L.elem[j-1];
        L.elem[i-1]=e;
        ++L.length;
}
int main(){
    Sqlist L;
    InitList(L);
    CreateList(L);
    ListInsert(L);
    Print(L);
}
搜索更多相关主题的帖子: include 键盘 元素 
2016-03-20 18:10
jklqwe111
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:35
帖 子:336
专家分:1135
注 册:2014-4-13
收藏
得分:20 
没有看到明显错误,下面这句可能会有些问题,scanf("%d,%d",&i,&e);在输入时要按如下形式2,22中间要有豆号,否则结果不正确,一般的都使用下面形式scanf("%d%d",&i,&e);这样可以使用空格,回车,TAB键分隔数据。
2016-03-20 19:32
拔D无情
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2016-3-20
收藏
得分:0 
回复 2楼 jklqwe111
谢谢,我发现了是在运行的时候使用的中文输入法,结果导致逗号所占字节出的问题
2016-03-20 20:59
快速回复:关于顺序表插入的问题
数据加载中...
 
   



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

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