双链表问题。
开始先创建链表。以 00 00 00结束。最后输出的时候为什么 name 项 不会输出呀。谁帮我改改啊。谢谢
#include<iostream>
#include<string>
using namespace std;
struct T // data 结构体
{
string name;
int num;
float computer;
};
class DLNode // 节点类。 包括 data left right 2个构造函数。
{
friend class DLList;
T data;
DLNode *left,*right;
DLNode(){left=right=NULL;}
DLNode( T & item,DLNode * L =NULL,DLNode * R=NULL)
{
item.name=data.name;
data.num=item.num;
left=L;
right=R;
}
};
class DLList // 双向链表类。
{
private:
DLNode *head,*tail; // 表头结点,尾结点。当前节点。
DLNode *currptr;
int size;
public:
DLList() // 构造函数。
{
head=tail=currptr=new DLNode();
size=0;
}
bool IsEmpty(void) const
{
return head->right==NULL;
}
void SetStart(void)
{
currptr=head;
}
void SetEnd(void)
{
currptr=tail;
}
int length (void)
{
return size;
}
void Next(void)
{
if(currptr==tail)
{
cout<<"NO next node"<<endl;
return;
}
currptr=currptr->right;
}
void InsertFromTail(T & item) // 插入节点。。。。。。。
{
tail->right=new DLNode (item,tail,NULL);
size++;
tail=tail->right;
}
void printList(void) // 输出。
{
head=head->right;
while(head!=NULL)
{
cout<<"学号 姓名 成绩"<<endl;
cout<<head->data.num<<" "<<head->data.name<<" "<<head->
head=head->right;
}
}
};
int main(void)
{
DLList list1;
T t1;
cout<<"请输入:"<<endl;
cout<<"学号 姓名 成绩:"<<endl;
cin>>t1.num>>t1.name>>
while() // 创建链表。
{
T &t2=t1;
list1.InsertFromTail(t2);
cout<<"学号 姓名 成绩:"<<endl;
cin>>t1.num>>t1.name>>
}
list1.printList(); // 打印链表。
return 0;
}