有关希尔排序的问题

uloborid 2009-02-22 04:28:21
以下代码能顺利通过而且可以看到运行结果,但是会弹出“程序运行错误需要调试”的对话框,是不是哪里数据溢出了?麻烦各位帮忙看下:

#include<iostream.h>
#include<conio.h>
#define LIST_INIT_SIZE 100
#define LISTICREMENT 10

typedef struct
{
int *elem;
int length;
int listsize;
}SqList;

void InitList_Sq(SqList &L)
{
L.elem=new int(LIST_INIT_SIZE);
L.length=0;
L.listsize=LIST_INIT_SIZE;
}



void ListInsert_Sq(SqList &L,int i,int e)
{
int *p,*q;
if(i<1||i>L.length+1)
cout<<"ERROR"<<endl;
if(L.length>=L.listsize)
{
int *newbase;
newbase=new int(L.listsize+LISTICREMENT);
if(!newbase)cout<<"ListInsert fail!"<<endl;
L.elem=newbase;
L.listsize+=LISTICREMENT;
}
q=&(L.elem[i]);
for(p=&(L.elem[L.length]);p>=q;--p) *(p+1)=*p;
*q=e;
++L.length;
}

void shelli(SqList &L,int d)
{
for (int i=d+1;i<=L.length;++i)
if(L.elem[i]<=L.elem[i-d])
{
L.elem[0]=L.elem[i];
for(int j=i-d;j>0&&L.elem[0]<=L.elem[j];j-=d)
L.elem[j+d]=L.elem[j];
L.elem[j+d]=L.elem[0];
}
}

void shells(SqList &L,int t)
{
for(int k=t;k>=1;k=k/2)
shelli(L,k);
}

void main()
{
SqList Sq;
InitList_Sq(Sq);
int i,x,n;
cout<<"how much elem the list have?"<<endl;
cin>>n;
cout<<"please input the elem you want push into the list!"<<endl;
for(i=1;i<=n;i++)
{
cin>>x;
ListInsert_Sq(Sq,i,x);
}
for(i=1;i<=n;i++) cout<<Sq.elem[i]<<" ";
cout<<endl;
shells(Sq,n/2);
cout<<endl;
for(i=1;i<=n;i++) cout<<Sq.elem[i]<<" ";
cout<<endl;
}
...全文
93 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
uloborid 2009-02-23
  • 打赏
  • 举报
回复
THS!向你们学习!
Gary@Tokyo 2009-02-23
  • 打赏
  • 举报
回复
很明显,很多地方,你用new申请内存使用完后没有delete掉
waizqfor 2009-02-22
  • 打赏
  • 举报
回复
[Quote=引用楼主 uloborid 的帖子:]
以下代码能顺利通过而且可以看到运行结果,但是会弹出“程序运行错误需要调试”的对话框,是不是哪里数据溢出了?麻烦各位帮忙看下:

C/C++ code
#include<iostream.h>
#include<conio.h>
#define LIST_INIT_SIZE 100
#define LISTICREMENT 10

typedef struct
{
int *elem;
int length;
int listsize;
}SqList;

void InitList_Sq(SqList &L)
{
L.elem=new int(LIST_INIT_SIZE);
L.le…
[/Quote]
LZ用完NEW申请空间之后 没有即使的DELETE 造成内存泄露了
太乙 2009-02-22
  • 打赏
  • 举报
回复
hen mingxian yige cuowu

you new meiyou delete

65,210

社区成员

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

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