四时宝库

程序员的知识宝库

写一个c++类链表可以增加(或删除)一个int值或int数组


// 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;

}


以下为程序运行结果:

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接