主题:帮忙编个程“双向有序链表的生成,插入,删除和查询”
十万火急!!!!
哪位帮个忙,用C++编写个程序“双向有序链表的生成,插入,删除和查询”
生成程序如下,就是不知道其他3个功能如何实现
#include <conio.h>
#include <stdio.h>
include "BILIST.H"
class NODE
{
//FRIEND CLASS "LIST" CAN HAVE ACCESS TO THE CLASS "NODE" 'S PRIVATE PART
friend class LIST;
private :
//PREVIOUS NODE LINK
NODE *PREVIOUS;
//NEXT NODE LINK
NODE *NEXT;
//THE CURRENT NODE DATA
int DATA;
};
class LIST
{
private :
//THE HEAD OF THE LIST
NODE *HEAD;
//THE TAIL OF THE LIST
NODE *TAIL;
public :
//CONSTRUCTOR FUNCTION
LIST()
{
//INITIAL
HEAD=0;
TAIL=0;
}
//ADD TO THE BACK OF THE LIST
void Build_HT(int Data);
//ADD TO THE FRONT OF THE LIST
void Build_TH(int Data);
//DISPLAY THE DATA OF THE LIST FROM HEAD TO TAIL
void LIST::DISPLAY_HT();
//DISPLAY THE DATA OF THE LIST FROM TAIL TO HEAD
void LIST::DISPLAY_TH();
//REMOVE ALL THE NODES IN THE LIST
void CLEAR();
~LIST()
{
CLEAR();
}
};
void LIST::Build_HT(int Data)
{
NODE *BUFFER;
BUFFER=new NODE;
BUFFER->DATA=Data;
if(HEAD==0)
{
HEAD=BUFFER;
HEAD->NEXT=0;
HEAD->PREVIOUS=0;
TAIL=HEAD;
}
else
{
TAIL->NEXT=BUFFER;
BUFFER->PREVIOUS=TAIL;
BUFFER->NEXT=0;
TAIL=BUFFER;
}
}
void LIST::Build_TH(int Data)
{
NODE *NEWNODE;
NEWNODE=new NODE;
NEWNODE->DATA=Data;
if(TAIL==0)
{
TAIL=NEWNODE;
TAIL->NEXT=0;
TAIL->PREVIOUS=0;
HEAD=TAIL;
}
else
{
NEWNODE->PREVIOUS=0;
NEWNODE->NEXT=HEAD;
HEAD->PREVIOUS=NEWNODE;
HEAD=NEWNODE;
}
}
void LIST::DISPLAY_HT()
{
NODE *TEMP;
TEMP=HEAD;
printf("\nDISPLAY THE LIST FROM HEAD TO TAIL:\n");
while(TEMP!=0)
{
printf("%d ",TEMP->DATA);
TEMP=TEMP->NEXT;
}
}
void LIST::DISPLAY_TH()
{
NODE *TEMP;
TEMP=TAIL;
printf("\nDISPLAY THE LIST FROM TAIL TO HEAD:\n");
while(TEMP!=0)
{
printf("%d ",TEMP->DATA);
TEMP=TEMP->PREVIOUS;
}
}
void LIST::CLEAR()
{
NODE *TEMP_HEAD=HEAD;
if (TEMP_HEAD==0) return;
do
{
NODE *TEMP_NODE=TEMP_HEAD;
TEMP_HEAD=TEMP_HEAD->NEXT;
delete TEMP_NODE;
}
while (TEMP_HEAD!=0);
}
int main(void)
{
LIST TEST;
int BUFFER;
BUFFER=4;
TEST.Build_HT(BUFFER);
BUFFER=5;
TEST.Build_HT(BUFFER);
BUFFER=6;
TEST.Build_HT(BUFFER);
BUFFER=3;
TEST.Build_TH(BUFFER);
BUFFER=2;
TEST.Build_TH(BUFFER);
BUFFER=1;
TEST.Build_TH(BUFFER);
clrscr();
TEST.DISPLAY_HT();
TEST.DISPLAY_TH();
printf("\n\nPress any key to EXIT... ...");
getch();
return 0;
}
哪位帮个忙,用C++编写个程序“双向有序链表的生成,插入,删除和查询”
生成程序如下,就是不知道其他3个功能如何实现
#include <conio.h>
#include <stdio.h>
include "BILIST.H"
class NODE
{
//FRIEND CLASS "LIST" CAN HAVE ACCESS TO THE CLASS "NODE" 'S PRIVATE PART
friend class LIST;
private :
//PREVIOUS NODE LINK
NODE *PREVIOUS;
//NEXT NODE LINK
NODE *NEXT;
//THE CURRENT NODE DATA
int DATA;
};
class LIST
{
private :
//THE HEAD OF THE LIST
NODE *HEAD;
//THE TAIL OF THE LIST
NODE *TAIL;
public :
//CONSTRUCTOR FUNCTION
LIST()
{
//INITIAL
HEAD=0;
TAIL=0;
}
//ADD TO THE BACK OF THE LIST
void Build_HT(int Data);
//ADD TO THE FRONT OF THE LIST
void Build_TH(int Data);
//DISPLAY THE DATA OF THE LIST FROM HEAD TO TAIL
void LIST::DISPLAY_HT();
//DISPLAY THE DATA OF THE LIST FROM TAIL TO HEAD
void LIST::DISPLAY_TH();
//REMOVE ALL THE NODES IN THE LIST
void CLEAR();
~LIST()
{
CLEAR();
}
};
void LIST::Build_HT(int Data)
{
NODE *BUFFER;
BUFFER=new NODE;
BUFFER->DATA=Data;
if(HEAD==0)
{
HEAD=BUFFER;
HEAD->NEXT=0;
HEAD->PREVIOUS=0;
TAIL=HEAD;
}
else
{
TAIL->NEXT=BUFFER;
BUFFER->PREVIOUS=TAIL;
BUFFER->NEXT=0;
TAIL=BUFFER;
}
}
void LIST::Build_TH(int Data)
{
NODE *NEWNODE;
NEWNODE=new NODE;
NEWNODE->DATA=Data;
if(TAIL==0)
{
TAIL=NEWNODE;
TAIL->NEXT=0;
TAIL->PREVIOUS=0;
HEAD=TAIL;
}
else
{
NEWNODE->PREVIOUS=0;
NEWNODE->NEXT=HEAD;
HEAD->PREVIOUS=NEWNODE;
HEAD=NEWNODE;
}
}
void LIST::DISPLAY_HT()
{
NODE *TEMP;
TEMP=HEAD;
printf("\nDISPLAY THE LIST FROM HEAD TO TAIL:\n");
while(TEMP!=0)
{
printf("%d ",TEMP->DATA);
TEMP=TEMP->NEXT;
}
}
void LIST::DISPLAY_TH()
{
NODE *TEMP;
TEMP=TAIL;
printf("\nDISPLAY THE LIST FROM TAIL TO HEAD:\n");
while(TEMP!=0)
{
printf("%d ",TEMP->DATA);
TEMP=TEMP->PREVIOUS;
}
}
void LIST::CLEAR()
{
NODE *TEMP_HEAD=HEAD;
if (TEMP_HEAD==0) return;
do
{
NODE *TEMP_NODE=TEMP_HEAD;
TEMP_HEAD=TEMP_HEAD->NEXT;
delete TEMP_NODE;
}
while (TEMP_HEAD!=0);
}
int main(void)
{
LIST TEST;
int BUFFER;
BUFFER=4;
TEST.Build_HT(BUFFER);
BUFFER=5;
TEST.Build_HT(BUFFER);
BUFFER=6;
TEST.Build_HT(BUFFER);
BUFFER=3;
TEST.Build_TH(BUFFER);
BUFFER=2;
TEST.Build_TH(BUFFER);
BUFFER=1;
TEST.Build_TH(BUFFER);
clrscr();
TEST.DISPLAY_HT();
TEST.DISPLAY_TH();
printf("\n\nPress any key to EXIT... ...");
getch();
return 0;
}