查看文章
 
2. 数据结构 顺序 链表 List_Simple 头为倒序 2005.01
2006-07-24 17:36
#include "iostream.h"

template <class ELEM>
class list
{
 protected:
  struct ListNode
  {
   ELEM  data;
   ListNode *link;
  };
  ListNode *first;
 public:
  list();
  ~list();
  void add(ELEM e);
  void RemoveAfter(ELEM e);
  ELEM FindIndex(ELEM e);
  void PrintList();
  void Insert(ELEM e, int i);
  void display();
};
template <class ELEM>
list<ELEM>::list()
{
 first = NULL;
}
template <class ELEM>
list<ELEM>::~list()
{
 ListNode *p = first;
 if (p != NULL)
 {
  first = first->link;
  delete p;
  p = first;
 }
}
// 函数功能:把插入的节点做头节点
template <class ELEM>
void list<ELEM>::add(ELEM e)
{
 ListNode *p = new ListNode;
 p->data = e;
 p->link = first;
 first = p;
}
template <class ELEM>
void list<ELEM>::RemoveAfter(ELEM e)
{
 ListNode *p = first;
 ListNode *q;
 if (first->data == e)
 {
  first = first->link;
  delete p;
 }
 for (p = first; p->link != NULL; p = p->link)
 {
  if (p->link->data != e)
   continue;
  
  else
  {
   q = p->link;
   p->link = q->link;
   delete q;
  }
 }
}
template <class ELEM>
ELEM list<ELEM>::FindIndex(ELEM e)
{
 for (ListNode *p = first; p != NULL; p = p->link)
 {
  if (p->data == e)
   return e;
 }
 return -1;
}
// 函数说明:从0开始
template <class ELEM>
void list<ELEM>::Insert(ELEM e, int i)
{
 ListNode *q;
 int j = 0;
 for (ListNode *p = first; p != NULL; p = p->link)
 {
  if (i == j)
  {
   q = new ListNode;
   q->data = e;
   q->link = p->link;
   p->link = q;
   return;
  }
  j ++;
 }
}
template <class ELEM>
void list<ELEM>::display()
{
 ListNode *p;
 for (p = first; p != NULL; p = p->link)
  cout << p->data << " ";
 cout << endl << endl;
}
void main()
{
 list<int> floatlist;

 for (int i = 0; i < 10; i ++)
  floatlist.add(i);
 floatlist.display();
 cout << "insert 55\n\n";
 floatlist.Insert(55 ,3);
 floatlist.display();
 int n = floatlist.FindIndex(55);
 cout << n << endl << endl;
 cout << "del 7\n\n";
 floatlist.RemoveAfter(7);
 floatlist.display();
 
 return;
}

类别:数据结构||添加到搜藏 |分享到i贴吧|浏览(273)|评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
     

   
帮助中心 | 空间客服 | 投诉中心 | 空间协议
©2012 Baidu