顺序表
#ifndef SEQUENTIALLIST_H
#define SEQUENTIALLIST_H
#define SequentialListSize 225
class SequentialList
{
public:
SequentialList();
virtual ~SequentialList();
void restart();
int getLength();
bool isEmpty();
void pushFront(int);
void pushBack(int);
void popFront();
void popBack();
void insert(int,int);
void remove(int);
void showAll();
int findValue(int);
int findPosition(int);
int findPositionReversed(int);
protected:
private:
int length;
int arr[SequentialListSize];
};
#endif
#include "SequentialList.h"
#include <iostream>
SequentialList::SequentialList()
{
this->length = 0;
}
SequentialList::~SequentialList()
{
}
void SequentialList::restart()
{
this->length = 0;
}
bool SequentialList::isEmpty()
{
return this->length == 0;
}
int SequentialList::getLength()
{
return this->length;
}
void SequentialList::pushFront(int value)
{
if(this->length == SequentialListSize)
{
std::cout << "顺序表已满,不能插入。" << std::endl;
return ;
}
for(int i=this->length; i>0 ; i--)
{
this->arr[i] = this->arr[i-1];
}
this->arr[0] = value;
this->length += 1;
}
void SequentialList::pushBack(int value)
{
if(this->length == SequentialListSize)
{
std::cout << "顺序表已满,不能插入。" << std::endl;
return ;
}
this->arr[this->length] = value;
this->length += 1;
}
void SequentialList::popFront()
{
if(isEmpty())
{
std::cout << "顺序表为空。" << std::endl;
return;
}
for(int i=1; i<this->length; i++)
{
this->arr[i-1] = this->arr[i];
}
this->length -= 1;
}
void SequentialList::popBack()
{
if(isEmpty())
{
std::cout << "顺序表为空。" << std::endl;
return;
}
this->length -= 1;
}
void SequentialList::insert(int pos,int value)
{
if(pos<0 || pos>this->length)
{
std::cout << "插入位置不合法。" << std::endl;
return ;
}
if(this->length == SequentialListSize)
{
std::cout << "顺序表已满,不能插入。" << std::endl;
return ;
}
for(int i=this->length; i>pos; i--)
{
this->arr[i] = this->arr[i-1];
}
this->arr[pos] = value;
this->length += 1;
}
void SequentialList::remove(int pos)
{
if(isEmpty())
{
std::cout << "顺序表为空。" << std::endl;
return;
}
if(pos<0 || pos>=this->length)
{
std::cout << "插入位置不合法。" << std::endl;
return ;
}
for(int i=pos+1; i<this->length; i++)
{
this->arr[i-1] = this->arr[i];
}
this->length -= 1;
}
void SequentialList::showAll()
{
if(isEmpty())
{
std::cout << "顺序表为空。" << std::endl;
return;
}
std::cout << "以下为顺序表中所有元素:" << std::endl;
for(int i=0; i<this->length; i++)
{
std::cout << this->arr[i] << std::endl;
}
}
int SequentialList::findValue(int value)
{
if(isEmpty())
{
std::cout << "顺序表为空。" << std::endl;
return -1;
}
for(int i=0; i<this->length; i++)
{
if(this->arr[i] == value)
return i;
}
return -1;
}
int SequentialList::findPosition(int pos)
{
if(isEmpty())
{
std::cout << "顺序表为空。" << std::endl;
return 0;
}
if(pos<0 || pos>=this->length)
{
std::cout << "索引越界。" << std::endl;
return 0;
}
return this->arr[pos];
}
int SequentialList::findPositionReversed(int pos)
{
if(isEmpty())
{
std::cout << "顺序表为空。" << std::endl;
return 0;
}
pos = this->length-pos-1;
if(pos<0 || pos>=this->length)
{
std::cout << "索引越界。" << std::endl;
return 0;
}
return this->arr[pos];
}
单链表
#ifndef LINKEDLIST_H
#define LINKEDLIST_H
class LinkedList
{