编写了一个链表操作的程序,如下:
#include <iostream>
using namespace std;
class Element
{
public:
Element* prev;
Element* next;
int key;
Element();
Element(int k);
};
Element::Element()
{
prev = NULL;
next = NULL;
key = 0;
}
Element::Element(int k)
{
prev = NULL;
next = NULL;
key = k;
}
class MyList
{
private:
Element* head;
public:
MyList();
~MyList();
Element* search(int k);
void insert(Element* e);
void delet(Element* e);
void print();
};
MyList::MyList()
{
head = NULL;
}
MyList::~MyList()
{
Element* cur = head;
Element* prev = head;
while(cur!=NULL)
{
prev = cur;
cur = cur->next;
delete prev;
}
head = NULL;
}
Element* MyList::search(int k)
{
Element* temp = head;
while( (temp!=NULL)&&(temp->key!=k) )
{
temp = temp->next;
}
return temp;
}
void MyList::insert(Element* e)
{
e->next = head;
if(head!=NULL)
{
head->prev = e;
}
head = e;
head->prev = NULL;
}
void MyList::delet(Element* e)
{
if( e==head )
{
head = head->next;
if(head!=NULL)
{
head->prev = NULL;
}
}
else if( e->next==NULL )
{
(e->prev)->next = NULL;
}
else
{
(e->next)->prev = e->prev;
(e->prev)->next = e->next;
}
delete e;
}
void MyList::print()
{