# 顺序表的元素删除插入的问题

geyao1266 2008-03-10 01:19:59
#include<iostream.h>

struct biao
{
int *p;
int length;
int chu;
};

class shunxu
{
public:
shunxu(biao& b)
{
b.length=0;
b.chu = 100;
b.p= new int[b.length];
}

void charu(biao& b,int l,int a)
{
for(int j=b.length-1;j>=l;j--)
{
b.p[j+1]=b.p[j];
}
b.p[l]=a;
b.length++;

}

void shanchu(biao& b,int i)
{
cout<<"你删除的是顺序表中的第"<<i+1<<"个数"<<b.p[i]<<endl;
for(int j = i;j<b.length;j++)
b.p[j]=b.p[j+1];
b.length--;

}

void hebing(biao& b,biao& a)
{
int i=0;
for(int j=b.length;j<(b.length+a.length);j++)
{
b.p[j]=a.p[i];
i++;
}
b.length+=a.length;
delete a.p;
}

void disp(biao& b)
{

cout<<"现在要输出的顺序表是:"<<endl;
for(int m=0;m<b.length;m++)
{
cout<<b.p[m]<<" ";
}
}
};

void main()
{
biao b1,b2;
shunxu ab(b1);
shunxu ab1(b2);
for(int i=0;i<5;i++)
{
b1.p[i]=i+5;
b1.length++;
}
for(int j= 0;j<5;j++)
{
b2.p[j] = j+2;
b2.length++;
}

ab.shanchu(b1,3);
ab.disp(b1);

ab.disp(b2);
ab.charu(b2,1,7);
ab.disp(b2);
ab.hebing(b1,b2);
ab.disp(b1);

}

...全文
141 4 打赏 收藏 举报

4 条回复

jianyuanPC 2008-03-10
• 打赏
• 举报

#include<iostream>

using namespace std;

struct biao
{
int *p;
int length;
int chu;
};

class shunxu
{
public:
shunxu(biao &b,int len)
{
b.length=len;
b.chu = 100;
b.p= new int[b.length];
}

void charu(biao &b,int l,int a)
{
for(int j=b.length-1;j >= l;j--)
{
b.p[j+1]=b.p[j];
}
b.p[l]=a;
b.length++;

}

void shanchu(biao &b,int i)
{
cout <<"你删除的是顺序表中的第" <<i+1 <<"个数" <<b.p[i]<<endl;
for(int j = i;j <b.length;j++)
b.p[j]=b.p[j+1];
b.length--;

}

void hebing(biao &b,biao &a)
{
int i=0;
for(int j=b.length;j <(b.length+a.length);j++)
{
b.p[j]=a.p[i];
i++;
}
b.length+=a.length;
//delete a.p;
}

void disp(biao& b)
{

cout <<"现在要输出的顺序表是:" <<endl;
for(int m=0;m <b.length;m++)
{
cout <<b.p[m] <<" ";
}
}
};

void main()
{
biao b1,b2;
shunxu ab(b1,5);
shunxu ab1(b2,5);
for(int i=0;i <5;i++)
{
b1.p[i]=i+5;
}
for(int j= 0;j <5;j++)
{
b2.p[j] = j+2;
}

printf("开心!\n");
ab.shanchu(b1,3);
ab.disp(b1);

ab.disp(b2);
ab.charu(b2,1,7);
ab.disp(b2);
ab.hebing(b1,b2);
ab.disp(b1);
}

/*把你的构造函数改了一下shunxu(biao &b,int len)~
b.length=0;
b.chu = 100;
b.p= new int[b.length];

void hebing(biao& b,biao& a)函数里面不能delete delete a.p;
*/
moss830704 2008-03-10
• 打赏
• 举报

delete a.p;

zcl198715 2008-03-10
• 打赏
• 举报

shunxu(biao& b)
{
b.length=0;
b.chu = 100;
b.p= new int[b.length];
}
b.p并没有分配任何空间!

Chappell 2008-03-10
• 打赏
• 举报

6.3w+

C++ 语言相关问题讨论，技术干货分享，前沿动态等
c++ 技术论坛（原bbs）

2008-03-10 01:19

1. 请不要发布与C++技术无关的贴子
2. 请不要发布与技术无关的招聘、广告的帖子
3. 请尽可能的描述清楚你的问题，如果涉及到代码请尽可能的格式化一下