LIst.h
#pragma once
#include<iostream>
using namespace std;
template<typename Datatype>
struct ordinalList
{
Datatype* a;
int max_size;
int passing_size;
};
template<typename Datatype>
class OrdinalList
{
public:
ordinalList< Datatype>* create(ordinalList< Datatype>* L)
{
L = (ordinalList< Datatype>*)malloc(sizeof(ordinalList< Datatype>));
L->a = new Datatype[10];
L->max_size = 10;
L->passing_size = 0;
return L;
}
template<typename Datatype>
void input(ordinalList< Datatype>* &L)
{
int n;
if ((L->passing_size)>=(L->max_size-1))
{
ordinalList< Datatype>* T = (ordinalList< Datatype>*)realloc(L->a, L->max_size + 10);
ordinalList< Datatype>* L = T;
L->max_size += 10;
}
while(cin >> n)
{
L->a[L->passing_size] = n;
L->passing_size++;
}
}
template<typename Datatype>
void output(ordinalList< Datatype>*& L)
{
int j = L->passing_size;
for (int i = 0; i < j; i++)
{
cout << L->a[i] << endl;
}
}
template<typename Datatype>
int length(ordinalList< Datatype>*& L)
{
return L->passing_size;
}
template<typename Datatype>
bool find(ordinalList< Datatype>*& L, Datatype replaceing)
{
int cout = 0;
while (cout < L->passing_size)
{
if (L->a[cout] == replaceing)
break;
else
cout++;
}
if (cout >= L->passing_size)
{
return 0;
}
else
return 1;
}
template<typename Datatype>
int substitute(ordinalList< Datatype>*& L, Datatype replaceing, Datatype repalced)
{
if (!find(L, replaceing))
{
cout << "none" << endl;
return 0;
}
else
{
int count = 0;
while (count < L->passing_size)
{
if (L->a[count] == replaceing)
break;
else
count++;
}
L->a[count] = repalced;
return 1;
}
}
template<typename Datatype>
void PopList(ordinalList< Datatype>*& L, Datatype replaceing)
{
if (find(L, replaceing))
{
cout << "none" << endl;
return 0;
}
else
{
int cout = 0;
while (cout < L->passing_size)
{
if (L->a[cout] == replaceing)
break;
else
cout++;
}
}
for (int i = cout; i < L->passing_size-1; i++)
{
L->a[i] = L->a[i + 1];
}
L->passing_size--;
}
};