数据结构之链表_list
来源:互联网 发布:河马在线网络贷款 编辑:程序博客网 时间:2024/05/16 05:06
#ifndef LIST_H_INCLUDED
#define LIST_H_INCLUDED
#include<iostream>
template <class T>
struct Node
{
T data;
Node<T>* next;
Node(const T& item, Node<T>* nxt=NULL) :data(item), next(nxt){}
};
#define LIST_H_INCLUDED
#include<iostream>
template <class T>
struct Node
{
T data;
Node<T>* next;
Node(const T& item, Node<T>* nxt=NULL) :data(item), next(nxt){}
};
template <class T>
class List
{
private:
Node<T>* head;
Node<T>* tail;
int size;
public:
List<T>() :size(0),head(NULL),tail(NULL){}
~List<T>();
void Delete(const T& item);
void Insert(const T& item);
Node<T>* Search(const T& item);
bool Empty(){ return head == NULL; }
int GetSize()const{ return size;}
void Show();
};
{
private:
Node<T>* head;
Node<T>* tail;
int size;
public:
List<T>() :size(0),head(NULL),tail(NULL){}
~List<T>();
void Delete(const T& item);
void Insert(const T& item);
Node<T>* Search(const T& item);
bool Empty(){ return head == NULL; }
int GetSize()const{ return size;}
void Show();
};
template <class T>
List<T>::~List()
{
Node<T>* p = head;
while (p!=NULL)
{
head = p->next;
delete p;
p=head;
}
}
template <class T>
void List<T>::Insert(const T& item)
{
if (head == NULL)
{
head =tail= new Node<T>(item);
}
else
{
tail->next = new Node<T>(item);
tail = tail->next;
}
size++;
}
template <class T>
Node<T>* List<T>::Search(const T& item)
{
Node<T>* p = head;
while (p != NULL)
{
if (p->data = item)
return p;
p = p->next;
}
return NULL;
}
Node<T>* List<T>::Search(const T& item)
{
Node<T>* p = head;
while (p != NULL)
{
if (p->data = item)
return p;
p = p->next;
}
return NULL;
}
template <class T>
void List<T>::Delete(const T& item)
{
Node<T>* p = Search(item);
if (p== NULL)
{
std::cout << "无此节点";
return;
}
size--;//肯定存在此节点
Node<T>* q = head;
if (p == q)
{
head = p->next;
delete p;
return;
}
Node<T>* q = head;
if (p == q)
{
head = p->next;
delete p;
return;
}
while (q->next != p)
q = q->next;
q = q->next;
q->next = p->next;
delete p;
delete p;
}
template <class T>
void List<T>::Show()
{
Node<T>* p = head;
while (p != NULL)
{
std::cout << p->data<<" ";
p = p->next;
}
}
#endif
1 0
- 数据结构之链表_list
- 【数据结构】线性表顺序存储_List
- 大话数据结构 code 第3章 01线性表顺序存储_List
- 数据结构之链表
- 数据结构之链表
- 数据结构之链表
- 数据结构之链表
- 数据结构之链表
- 数据结构之链表
- 数据结构之链表
- 数据结构之链表
- 数据结构之链表
- 数据结构之链表
- 数据结构之链表
- 数据结构之链表
- 数据结构之链表
- 数据结构之链表
- 数据结构之链表
- 【数据结构和算法】排序算法之一:冒泡排序
- What is Cross Validation(交叉验证)
- C语言读取文件
- Java NIO系列教程(五) SocketChannel
- Java NIO系列教程(六) ServerSocketChannel
- 数据结构之链表_list
- svn文件冲突,树冲突详解
- Java NIO系列教程(七) DatagramChannel
- Codeforces 599 A. Patrick and Shopping
- Linux kernel多线程的几种实现
- Krakatoa插件for maya安装,解决每次渲染都提示注册问题
- Java NIO系列教程(八) FileChannel
- xml的语法
- [android] cannot be cast to android.widget.HeaderViewListAdapter