一个数据结构问题

v2psv 2013-10-23 11:03:46
我是按照书上的代码敲的,怎么就是运行错误呢?

int InsertList_Sq(Sq_List &L, int i, ElemType e)
{
ElemType *p, *q;
ElemType *newbase;
if (i < 1 || i > L.length + 1)
return 1;
if (L.length >= L.listsize)
{
newbase = (ElemType *)realloc(L.elem, sizeof(ElemType)* (LIST_INCREMENT + LIST_INIT_SIZE));
if (!newbase)
exit(OVERFLOW);
L.elem = newbase;
L.listsize = LIST_INIT_SIZE + LIST_INCREMENT;
}
p = &L.elem[i - 1];
for (q = &L.elem[L.length - 1]; q >= p; --q) //顺序表中所有元素向后移动一个位置
{
*(q + 1) = *q;
}
*p = e; //debug到这里的时候,显示p指针指向的数据是正确的,但是L数组中就是没有输入啊,p指针分明是指向了数组中的一个元素啊。。。。。。
L.length++; //表长加1
return 0;
}
...全文
101 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2013-10-24
  • 打赏
  • 举报
回复
int InsertList_Sq(Sq_List &L, int i, ElemType e)
{
    ElemType *p, *q;
    ElemType *newbase;
    int newsize;

    if (i < 1 || i > L.length + 1)
        return 1;
    if (L.length >= L.listsize)
    {
        newsize=L.listsize;
        while (1) {
            newsize+=LIST_INCREMENT;
            if (newsize>L.length) break;
        }
        newbase = (ElemType *)realloc(L.elem, sizeof(ElemType)* newsize);
        if (!newbase)
            exit(OVERFLOW);
        L.elem = newbase;
        L.listsize = newsize;
    }
    p = &L.elem[i - 1];
    for (q = &L.elem[L.length - 1]; q >= p; --q)                                    //顺序表中所有元素向后移动一个位置
    {
        *(q + 1) = *q;
    }
    *p = e;
    L.length++;                                                                        //表长加1
    return 0;
}
buyong 2013-10-24
  • 打赏
  • 举报
回复
//debug到这里的时候,显示p指针指向的数据是正确的,但是L数组中就是没有输入啊 impossible

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧