公式化描述
//line.h
#ifndef LINE_H
#define LINE_H
#include <iostream>
using namespace std;
class line_table
{
public :
line_table(unsigned int max_line);
~line_table(){
delete [] element;
}
bool is_empty() const
{
return real_size==0;
}
int length() const
{
return real_size;
}
bool find(int k ,int &x);
int search(const int x);
void delete_line(int k,int &x);
void insert_line(int k,int x);
void output()
{
for(int i=0;i<real_size;i++)
{
cout<<element[i]<<endl;
}
}
private:
unsigned int max_length;
unsigned int real_size;
int *element;
};
#endif
//line.cpp
#include "line.h"
line_table::line_table(unsigned int max_line)
{
if(max_line)
{
max_length = max_line;
real_size = 0;
element = new int[max_line];
}
}
int line_table::search(const int x)
{
for(int i = 0; i < real_size; i++)
{
if(x == element[i])
return i;
}
return -1;
}
bool line_table::find(int k,int &x)
{
if(k<1 ||k > real_size)
{
return false;
}
else
{
x = element[k-1];
return true;
}
}
void line_table::delete_line(int k,int &x)
{
if(k < 1 || k > real_size)
return;
else
{
x = element[k-1];
for(int i=k;i<real_size;i++)
{
element[i-1] = element[i];
}
real_size--;
}
}
void line_table::insert_line(int k,int x)
{
if(real_size == 0)
{
element[0]= x;
real_size++;
}
else if(real_size >= max_length || k >real_size ||k <1)
return;
else
{
for(int i= real_size-1;i>=k-1;i--)
{
element[i+1] = element[i];
}
element[k-1] = x;
real_size++;
}
}
//dar.cpp
#include <iostream>
#include "line.h"
using namespace std;
int main()
{
line_table line(20);
line.insert_line(1,2);
line.insert_line(1,3);
line.insert_line(1,4);
// line.output();
int x;
line.delete_line(1,x);
line.output();
cout<<x<<endl;
return 0;
}