// hellowin32console.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<iostream>
using namespace std;
typedef struct Node
{
int val;
Node *next;
};
class List
{
public:
List();
List(int a);
List(int *p,int len);
~List();
void addList(int a);
void addGroupList(int *p,int len);
void delList(int a);
void delGroupList(int *p,int len);
void list_print();
private:
Node *prev;
Node *pcur;
Node *phead;
};
List::List()
{
prev=pcur=phead=NULL;
}
List::List(int a)
{
prev=pcur=phead=NULL;
Node *ptemp=new Node;
ptemp->val=a;
ptemp->next=NULL;
phead=ptemp;
}
List::List(int *p,int len)
{
prev=pcur=phead=NULL;
addGroupList(p,len);
}
List::~List()
{
pcur=phead;
cout<<"释放内存中\n";
while(pcur!=NULL)
{
cout<<'.';
prev=pcur;
pcur=pcur->next;
delete prev;
}
cout<<"释放内存\n";
}
void List::addList(int a)
{
Node *ptemp=new Node;
ptemp->val=a;
ptemp->next=NULL;
if(phead==NULL)
{
phead=ptemp;
}else
{
prev=pcur=phead;
if(phead->val>=a)
{
ptemp->next=phead;
phead=ptemp;
return;
}
while(pcur!=NULL)
{
if(pcur->val<a)
{
prev=pcur;
pcur=pcur->next;
}else
{
prev->next=ptemp;
ptemp->next=pcur;
return;
}
}
prev->next=ptemp;
}
}
void List::addGroupList(int *p,int len)
{
while(len--)
{
addList(*p++);
}
}
void List::delList(int a)
{
Node *ptemp=NULL;
prev=pcur=phead;
if(phead!=NULL)
{
while(pcur!=NULL)
{
if(pcur->val==a)
{
ptemp=pcur;
prev->next=pcur->next;
if(pcur==phead)
{
phead=pcur->next;
pcur=pcur->next;
prev=pcur;
}else
{
pcur=pcur->next;
}
delete ptemp;
}else
{
prev=pcur;
pcur=pcur->next;
}
}
}
}
void List::delGroupList(int *p,int len)
{
while(len--)
{
delList(*p++);
}
}
void List::list_print()
{
char i=0;
pcur=phead;
cout<<"输出链表数据为:\n";
while(pcur!=NULL)
{
cout<<pcur->val;
cout<<'\t';
pcur=pcur->next;
if(++i>5)
{
cout<<endl;
i=0;
}
}
cout<<endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
//cout<<"hello world";
int aa[5]={5,1,1,8,8};
List listdata(aa,5);
listdata.addList(310);
listdata.list_print();
listdata.addList(80);
listdata.list_print();
listdata.delList(310);
listdata.list_print();
listdata.addList(150);
listdata.list_print();
listdata.addList(490);
listdata.list_print();
listdata.addGroupList(aa,5);
listdata.list_print();
listdata.delGroupList(aa,5);
listdata.list_print();
return 0;
}
以下为程序运行结果: