编写顺序表时出现的错误
没有错误但是运行不了,在产生随机数那个地方无法调试,求大神指导啊
#include<iostream>
#include<stdlib.h>
using namespace std;
const int DefaultListSize=100;
class Alist
{
int length,maxsize,*p;
public:
void append(int n); //..........添加
void insert(int m,int n); //..........插入
void remove(int n); //...........删除
void output(); //..........输出
Alist(int size=DefaultListSize)
{
maxsize = size;
length= 0;
}
~Alist() {}
};
void Alist::append (int n)
{
*p=n;
p++;length++;
}
void Alist::insert (int m,int n) //............插入
{
int i;
if(length>=maxsize) cout<<false;
for(i=length-1;i>m-1;i--)
*(p+i+1)=*(p+i);
*(p+m)=n;
length++;
}
void Alist::remove (int n) //.............删除
{
if(n>=length) cout<<false;
int i;
for(i=n-1;i<length;i++)
*(p+n)=*(p+n+1);
length--;
}
void Alist::output () //...........输入
{
int m;
for(m=0;m<length;m++)
cout<<*(p+m)<<" "<<endl;
}
int main()
{
Alist obj;
int elem;
int i;
for(i=0;i<10;i++)
{
elem=rand()%100;
obj.append (elem);
}
obj.output ();
obj.insert (3,2);
obj.output ();
obj.remove (5);
obj.output ();
return 0;
}
[解决办法]
请问给p分配空间了吗?
Program received signal SIGSEGV, Segmentation fault.
0x0000000000400a52 in Alist::append (this=0x7fffffffdf90, n=83) at ssl.cpp:26
26*p=n;
(gdb) list 26
21~Alist() {}
22};
23
24void Alist::append (int n)
25{
26*p=n;
27p++;length++;
28}
29
30void Alist::insert (int m,int n) //............插入
(gdb) p this->p
$1 = (int *) 0x0
还随意移动p指针,直接移到野指针位置了。
必须出错啊~~~