学习数据结构基础,如有错误,请指正
/***
数据结构:链表的模拟
***/
#ifndef __LINKLIST_H__
#define __LINKLIST_H__
typedef int ElemType;
struct LinkNode{
ElemType item;
LinkNode *next;
};
class LinkList{
private:
LinkNode *listHead;
public:
LinkList();
~LinkList();
void initLinkList();
void insertLinkListNodes(ElemType e);
void deleteLinkListNode(ElemType e);
void destroyLinkList();
void print();
};
#endif //__LINKLIST_H__
#include "LinkList.h"
#include <iostream>
using namespace std;
//#include <cstdlib>
LinkList::LinkList()
{
this->listHead = NULL;
this->initLinkList();
}
LinkList::~LinkList()
{
this->destroyLinkList();
}
void LinkList::initLinkList()
{
LinkNode *p,*q = NULL;
for (int i=0;i!=10;++i)
{
p = new LinkNode();
int num = rand()%10;
p->item = num;
p->next = NULL;
if (NULL == this->listHead)
{
this->listHead = p;
}
else
{
q->next = p;
}
q = p;
cout<<"init a node..."<<endl;
}
}
void LinkList::insertLinkListNodes(ElemType e)
{
// 对列头部插入
LinkNode *p = new LinkNode ;
p->item = e;
p->next = this->listHead;
this->listHead = p;
}
void LinkList::deleteLinkListNode(ElemType e)
{
// delete first LinkNode whose item equite e;
LinkNode *p,*q = NULL;
for (p = this->listHead; p!=NULL;p=p->next)
{
if (p->item == e)
{
if (p == this->listHead)
{
this->listHead = this->listHead->next;
delete p;
}
else
{
q->next = p->next;
delete p;
cout<<"delete successfully."<<endl;
}
return;
}
q = p;
}
}
void LinkList::destroyLinkList()
{
LinkNode *p,*q = NULL;
for (p = this->listHead; p!=NULL;p=p->next)
{
q = p->next;
delete p;
}
this->listHead = NULL;
}
void LinkList::print()
{
cout<<"link list items:"<<endl;
LinkNode *p = NULL;
for (p = this->listHead; p!=NULL;p=p->next)
{
cout<<p->item<<endl;
}
}
int main()
{
LinkList *list = new LinkList();
list->print();
list->insertLinkListNodes(3);
list->print();
list->deleteLinkListNode(2);
list->print();
getchar();
return 0;
}