#include <cstdio>
template<typename T> class List
{
public:
List<T>(): next(NULL) {}
List<T>(T x): val(x), next(NULL) {}
List<T>(T x, List<T>* n): val(x), next(n) {}
T val;
List<T>* next;
};
template<typename T>
List<T>* make_empty(List<T>* list)
{
while (list->next != NULL)
{
auto tmp = list->next;
list->next = tmp->next;
delete tmp;
}
return list;
}
template<typename T>
bool is_empty(List<T>* list)
{
return list->next == NULL;
}
template<typename T>
bool is_last(List<T>* pos)
{
return pos->next == NULL;
}
template<typename T>
List<T>* find(T x, List<T>* list)
{
while (list->next != NULL)
{
list = list->next;
if (list->val == x)
{
return list;
}
}
return NULL;
}
template<typename T>
void remove(T x, List<T>* list)
{
while (list->next != NULL)
{
if (list->next->val == x)
{
auto tmp = list->next;
list->next = tmp->next;
delete tmp;
} else
{
list = list->next;
}
}
}
template<typename T>
List<T>* find_previous(T x, List<T>* list)
{
while (list->next != NULL)
{
if (list->next->val == x)
{
return list;
} else
{
list = list->next;
}
}
return NULL;
}
template<typename T>
void insert(T x, List<T>* pos)
{
List<T>* tmp = new List<T>(x, pos->next);
pos->next = tmp;
}
template<typename T>
void delete_list(List<T>* list)
{
while (list != NULL)
{
auto tmp = list;
list = list->next;
delete tmp;
}
}
List C++ Implementation
最新推荐文章于 2022-10-11 15:03:49 发布