#include <iostream.h>
#include <string.h>
class LinerStr
{
private:
int Size;
int Point;
char **strp;
public:
LinerStr(int n=100)
{
if(n==0)
{
Size = Point = 0;
strp = NULL;
}
else
{
Size = n;
Point = 0;
strp = new char *[n];
for(int i=0; i<n; i++)
{
strp[i] = NULL;
}
}
}
~LinerStr()
{
for(int i=0; i<Point; i++)
{
if(strp[i] != NULL)
{
delete [] strp[i];
}
}
if(strp != NULL)
{
delete [] strp;
}
}
void print();
void addstr(char *);
int search(char *);
void deletestr(char *);
};
void LinerStr::print()
{
for(int i=0; i<Point; i++)
{
cout << strp[i] << '/n';
}
cout << '/n';
}
void LinerStr::addstr(char *s)
{
if(Point==Size)
{
char **p;
Size += 10;
p = new char*[Size];
for(int i=0; i<Point; i++)
{
p[i] = strp[i];
}
delete[] strp;
strp = p;
cout << "V/n";
}
strp[Point] = new char[strlen(s)+1];
strcpy(strp[Point],s);
Point++;
}
int LinerStr::search(char *s)
{
for(int i=0; i<Point; i++)
{
if(strcmp(strp[i], s) == 0)
return i;
}
return -1;
}
void LinerStr::deletestr(char *s)
{
int i=0;
if((i=search(s)) == -1)
{
cout << "表中没有要删的字符串。";
}
else
{
delete[] strp[i];
for(int j=i; j<Point-1; j++)
{
strp[j] = strp[j+1];
}
strp[Point-1]=NULL;
Point--;
cout << "删除完毕。";
}
}
void main()
{
LinerStr ls(1);
ls.print();
ls.addstr("aaa");
ls.print();
ls.addstr("bbb");
ls.addstr("ccc");
ls.print();
ls.addstr("ddd");
ls.addstr("eee");
ls.print();
}