#include "ArrayList.h"
/****************start from here**********************/
#include"List.h"
#include<iostream>
using namespace std;
ArrayList::ArrayList()
{
data=new int[1005];
capacity=0;
size=0;
}
ArrayList::~ArrayList()
{
delete [] data;
}
void ArrayList::insert(int pos,int value)
{
data[pos]=value;
capacity++;
size++;
}
void ArrayList::remove(int pos)
{
for(int i=0;i<capacity;i++)
data[i]=data[i+1];
capacity--;
size--;
}
int ArrayList::at(int pos)const
{
return data[pos];
}
void ArrayList::modify(int pos,int newValue)
{
data[pos]=newValue;
}
#include "LinkedList.h"
#include<iostream>
using namespace std;
/****************start from here**********************/
LinkedList::LinkedList() : List(0)
{
head = new Node();
}
LinkedList::LinkedList(const LinkedList &rhs) : List(rhs.size)
{
head = new Node;
Node *p = head;
for (Node *q = rhs.head->next; q; q = q->next)
{
p->next = new Node(q->data, q->next);
p = p->next;
}
}
LinkedList::LinkedList(int const a[], int n) : List(n)
{
head = new Node();
Node *p = head;
for (int i = 0; i < size; i++)
{
p->next = new Node(a[i], nullptr);
p = p->next;
}
}
LinkedList::LinkedList(int n, int value) : List(n)
{
head = new Node();
Node *p = head;
for (int i = 0; i < size; i++)
{
p->next = new Node(value, nullptr);
p = p->next;
}
}
LinkedList::~LinkedList()
{
Node *p = head;
while (head->next != NULL)
{
p = head->next;
delete head;
head = p;
}
delete head;
}
void LinkedList::insert(int pos, int value)
{
Node *p = head;
for (int i = -1; i < pos - 1; i++)
{
p = p->next;
}
Node *q = new Node(value, p->next);
p->next = q;
size++;
}
void LinkedList::remove(int pos)
{
Node *p = head;
for (int i = -1; i < pos - 1; i++)
{
p = p->next;
}
Node *q = head;
for (int j = -1; j < pos + 1; j++)
{
q = q->next;
}
p->next = q;
size--;
}
int LinkedList::at(int pos) const
{
Node *p = head;
for (int i = -1; i < pos; i++)
{
p = p->next;
}
return p->data;
}
void LinkedList::modify(int pos, int newValue)
{
Node *p = head;
for (int i = -1; i < pos; i++)
{
p = p->next;
}
p->data = newValue;
}
void LinkedList::disp(ostream &os) const
{
Node *p = head;
while (p->next != NULL)
{
p = p->next;
cout << p->data << " ";
}
cout << endl;
}
/****************start from here**********************/
#include"ArrayList.h"
#include<iostream>
using namespace std;
ArrayList::ArrayList()
{
size = 0;
data = new int[10];
capacity = 10;
}
ArrayList::ArrayList(const ArrayList &rhs)
{
data = new int[rhs.capacity];
size = rhs.size;
for (int i = 0; i < size; i++)
{
data[i] = rhs.data[i];
}
}
ArrayList::ArrayList(int const a[], int n)
{
data = new int[n];
size = n;
for (int i = 0; i < n; i++)
{
data[i] = a[i];
}
}
ArrayList::ArrayList(int n, int value)
{
data = new int[n];
size = n;
for (int i; i < n; i++)
{
data[i] = value;
}
}
ArrayList::~ArrayList()
{
delete[] data;
}
void ArrayList::insert(int pos, int value)
{
if (size == capacity)
{
int *old = data;
data = new int[2 * size];
for (int i = 0; i < size; i++)
{
data[i] = old[i];
}
capacity = 2 * size;
}
for (int i = size - 1; i >pos; i--)
data[i + 1] = data[i];
data[pos] = value;
size++;
}
void ArrayList::remove(int pos)
{
for (int i = pos; i < size - 1; i++)
data[i] = data[i + 1];
size--;
}
int ArrayList::at(int pos) const
{
return data[pos];
}
void ArrayList::modify(int pos, int newValue)
{
data[pos] = newValue;
}
void ArrayList::setCapacity(int newCapa)
{
if(newCapa<capacity)
return ;
else
{
capacity=newCapa;
int *newdata=new int[capacity];
for(int i=0;i<size;i++)
{
newdata[i]=data[i];
}
delete[]data;
data=newdata;
}
}
#include"LinkedList.h"
#include<iostream>
using namespace std;
LinkedList::LinkedList() : List(0)
{
head = new Node();
}
LinkedList::LinkedList(const LinkedList &rhs) : List(rhs.size)
{
head = new Node;
Node *p = head;
for (Node *q = rhs.head->next; q; q = q->next)
{
p->next = new Node(q->data, nullptr);
p = p->next;
}
}
LinkedList::LinkedList(int const a[], int n) : List(n)
{
head = new Node();
Node *p = head;
for (int i = 0; i < n; i++)
{
p->next = new Node(a[i], nullptr);
p = p->next;
}
}
LinkedList::LinkedList(int n, int value) : List(n)
{
head = new Node();
Node *p = head;
for (int i = 0; i < n; i++)
{
p->next = new Node(value, nullptr);
p = p->next;
}
}
LinkedList::~LinkedList()
{
Node *p = head;
while (head->next != NULL)
{
p = head->next;
delete head;
head = p;
}
delete head;
}
LinkedList::Node* LinkedList::advance(int pos)const
{
Node *p=head;
for(int i=-1;i<pos;i++)
{
p=p->next;
}
return p;
}
void LinkedList::insert(int pos, int value)
{
Node *p = head;
for (int i = -1; i < pos - 1; i++)
{
p = p->next;
}
Node *q = new Node(value, p->next);
p->next = q;
size++;
}
void LinkedList::remove(int pos)
{
Node *p = head;
for (int i = -1; i < pos - 1; i++)
{
p = p->next;
}
Node *q = head;
for (int j = -1; j < pos + 1; j++)
{
q = q->next;
}
p->next = q;
size--;
}
int LinkedList::at(int pos) const
{
Node *p = head;
for (int i = -1; i < pos; i++)
{
p = p->next;
}
return p->data;
}
void LinkedList::modify(int pos, int newValue)
{
Node *p = head;
for (int i = -1; i < pos; i++)
{
p = p->next;
}
p->data = newValue;
}
void LinkedList::disp(ostream &os) const
{
Node *p = head;
while (p->next != NULL)
{
p = p->next;
cout << p->data << " ";
}
}
#ifndef _LIST_H_
#define _LIST_H_
#include <iostream>
using std::ostream;
using namespace std;
class List{
protected:
int size;
public:
//¼æ¾ßĬÈϹ¹Ô캯ÊýºÍ¹¦Äܹ¹Ô캯Êý
List(int s=0):size(s){}
//¿½±´¹¹Ô캯Êý
List(const List&rhs):size(rhs.size){}
/*ÒÔÏÂΪÐ麯Êý*/
//×÷Ϊ¼Ì³ÐµÄ»ùÀàµÄÎö¹¹º¯ÊýÒ»¶¨ÒªÊÇÐéµÄ
virtual ~List(){}
//ÆÕͨµÄ·ÇÐ麯Êý
int getSize()const{return size;}
/*ÒÔÏÂΪ´¿Ð麯Êý£¬¼´Ã»ÓÐʵÏÖ*/
virtual void insert(int pos,int value)=0;
virtual void remove(int pos)=0;
virtual int at(int pos)const=0;
virtual void modify(int pos,int newValue)=0;
/*ÄãµÄ¹¤×÷ÔÚÕâÀ´Ë´¦Éè¼Ædispº¯Êý*/
virtual void disp(ostream&os)const
{
for(int i=0,n=getSize();i<n;i++)
{
os<<at(i)<<" ";
}
}
};
#endif // _LIST_H_
#ifndef _ILIST_H_
#define _ILIST_H_
/****************start from here**********************/
#include<iostream>
using namespace std;
class IList
{
public:
virtual void insert(int pos,int value)=0;
virtual void remove(int pos)=0;
virtual int at(int pos)const=0;
virtual void modify(int pos,int newValue)=0;
virtual void disp(ostream&os)const{};
};
#endif
如有侵权可联系删除