#include<stdlib.h>
#include<iostream.h>
typedef struct node
{
int data;
struct node *pre;
struct node *next;
}*LinkList,Lnode;
class DList
{
//定义一个结构体,做为链表的元素的结构类型。
LinkList Head;
public:
//定义一个链表
void CreateLinkList()
{
LinkList q,s;
q=(LinkList)malloc(sizeof(Lnode));
if(q == NULL)
{
//printf("In CreateLinkList p is null,wrong!/n");
cout<<"In CreateLinkList p is null,wrong!"<<endl;
return;
}
q->data=NULL;
q->next=NULL;
q->pre=NULL;
Head = q;
int x,flag=1;
//printf("input a node's data,0 to end:\n");
cout<<"input a node's data,0 to end:"<<endl;
while(flag!=0)
{
//scanf("%d",&x);
cin>>x;
if(x!=0)
{
s=(LinkList)malloc(sizeof(Lnode));
s->data=x;
s->next=NULL;
s->pre=q;
q->next=s;
q=s;
}
else
{
flag=0;
//break;
}
}
}
//打印链表的元素
void PrintLinkList()
{
LinkList q;
q=Head->next;
if(Head->next==NULL)
{
//printf("L is empty\n");
cout<<"DList is null!!"<<endl;
}
else
{
while(q!=NULL)
{
//printf("%d\n",q->data);
cout<<q->data<<endl;
q=q->next;
}
}
}
//计算链表的长度。
int LenthLinkList()
{
int count=0;
LinkList q;
q=Head->next;
while(q!=NULL)
{
count++;
if(q->next==NULL) break;
q=q->next;
}
return count;
}
//删除一个元素
void DeleteLinkList()
{
LinkList q;
q = Head->next;
if(q == NULL)
{
//printf("%s\n","DList is null!!");
cout<<"DList is null!!"<<endl;
return;
}
else
{
Head->next = q->next;
delete q;
}
}
};
忘了c++里面new函数怎么用的了,所以只能用malloc了。和delete匹配使用有点别扭哈,下次看看再改,今天要下班啦。