| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1427 人关注过本帖
标题:调试没有问题,缺总是没有执行。哪位有空帮我看下问题出在哪里
只看楼主 加入收藏
BetweenWords
Rank: 1
等 级:新手上路
帖 子:7
专家分:7
注 册:2017-3-15
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
调试没有问题,缺总是没有执行。哪位有空帮我看下问题出在哪里
程序代码:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define MaxSize 10
typedef int ElemType;  //将int 定义为Elemtype

typedef struct
{
    int *elem;  
    int length; //线性表中元素的个数
    int listsize;//线性表大小
} Sqlist;     //Sqlist is the varible name

//初始化动态顺序表
void initSqlist( Sqlist *L )
{
    L->elem = (int *)malloc( MaxSize*sizeof(ElemType) );
    //malloc函数,动态分配长度为sizeof(指定类型大小),数量MaxSize个的连续空间,返回值为该空间的首地址给指针
    //“->”表示指针指向结构体中的成员,这里即elem
    if(!L->elem) exit(0);
    L->length = 0;  //初始时,0个元素 线性表的长度
    L->listsize = MaxSize;//线性表的容量
}// 于是得到了一张线性表L

//在动态生成的顺序表L中插入元素
void InsertElem( Sqlist *L, int i, ElemType item )
{
    //在第 i 个位置,插入元素 item
    ElemType *base, *insertPtr, *p;
    if(i<1||i>L->length+1) exit(0);
    if(L->length>=L->listsize)
    {
        base=(ElemType *)realloc(L->elem,(L->listsize+10)*sizeof(ElemType));
        //realloc 将L-elem所指向的空间大小给变为后面给定的值,即重新分配空间大小
        //重新追加空间;
        L->elem=base;
        L->listsize = L->listsize + 100;
    }
    insertPtr=&(L->elem[i-1]);
    for(p=&(L->elem[L->length-1]);p>=insertPtr;p--)
    {
        *(p+1)=*p;
        *insertPtr = item;
        L->length++;
    }
}
//从顺序表中删除元素
void DelElem(Sqlist *L, int i)
{
    ElemType *delItem, *q;
    if(i<1||i>L->length) exit(0);
    delItem=&(L->elem[i-1]);
    q=L->elem+L->length-1;
    for(++delItem;delItem<=q;++delItem)
        *(delItem-1)=*delItem;
    L->length--;
}

void main()
{
    Sqlist l;
    int i;
    initSqlist(&l);
    for(i=0;i<15;i++)
    {
        InsertElem( &l,i+1,i+1 );
    }
    printf("\n the content of the list is: \n");
    for(i=0;i<l.length;i++)
    {
        printf("%d ",l.elem[i]);
    }
    DelElem(&l,5);
    printf("\n Delete the fifth number \n");
    for(i=0;i<l.length;i++)
    {
        printf("%d ",l.elem[i]);
    }
    getchar();
}

程序内容大致为: 生成一个大小为10的顺序表,要求存储15个数, 并对该线性表进行插入和删除操作。
程序调试没有问题,但是却没有运行。不知道哪里出错了。。。
2017-03-15 10:53
alice_usnet
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:18
帖 子:370
专家分:2020
注 册:2016-3-7
收藏
得分:20 
程序代码:
void InsertElem( Sqlist *L, int i, ElemType item )
{
    //在第 i 个位置,插入元素 item
    ElemType *base, *insertPtr, *p;
    if(i<1||i>L->length+1) exit(0);
    if(L->length>=L->listsize)
    {
        base=(ElemType *)realloc(L->elem,(L->listsize+10)*sizeof(ElemType));
        //realloc 将L-elem所指向的空间大小给变为后面给定的值,即重新分配空间大小
        //重新追加空间;
        L->elem=base;
        L->listsize = L->listsize + 10;  //应该是10
    }
    insertPtr=&(L->elem[i-1]);
    for(p=&(L->elem[L->length]);p>insertPtr;p--)  //L->elem[L->length - 1],当L->length为0时,L->elem[-1]是未定义 的,改为L->elem[L->length]
    {
        *p=*(p - 1); 
    }
    *insertPtr = item;
    L->length++;
}



[此贴子已经被作者于2017-3-15 12:00编辑过]


未佩好剑,转身便已是江湖
2017-03-15 11:57
BetweenWords
Rank: 1
等 级:新手上路
帖 子:7
专家分:7
注 册:2017-3-15
收藏
得分:0 
回复 2楼 alice_usnet
谢谢,用你的方法已经解决了问题。    
2017-03-15 14:25
快速回复:调试没有问题,缺总是没有执行。哪位有空帮我看下问题出在哪里
数据加载中...
 
   



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

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