| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 452 人关注过本帖
标题:双链表问题。
只看楼主 加入收藏
做个好人
Rank: 1
等 级:新手上路
帖 子:23
专家分:1
注 册:2010-4-9
结帖率:33.33%
收藏
已结贴  问题点数:20 回复次数:2 
双链表问题。
开始先创建链表。以  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;
}












   
搜索更多相关主题的帖子: 双链 
2010-04-28 09:02
ciweitou163
Rank: 7Rank: 7Rank: 7
来 自:河北 石家庄
等 级:黑侠
威 望:1
帖 子:144
专家分:528
注 册:2008-10-4
收藏
得分:20 
程序代码:
#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)
    {
    
        data.name=item.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->}
    }
};
int main(void)
{
    DLList list1;
    T t1;
    cout<<"请输入:"<<endl;
    cout<<"学号     姓名     成绩:"<<endl;
    cin>>t1.num>>t1.name>> while(00&&t1.num!=00&&t1.name!="00")                 //  创建链表。
    {

       T &t2=t1;    
       list1.InsertFromTail(t2);
       cout<<"学号     姓名     成绩:"<<endl;
       cin>>t1.num>>t1.name>> }
    list1.printList();                                            //   打印链表。
    return 0;
}


节点定义是赋值反了


  • 满眼生机转化钧;天工人巧日争新。
2010-04-28 11:42
做个好人
Rank: 1
等 级:新手上路
帖 子:23
专家分:1
注 册:2010-4-9
收藏
得分:0 
回复 2楼 ciweitou163
  。谢谢啊。
真傻。犯了个这么简单的错误。
2010-04-28 22:04
快速回复:双链表问题。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018009 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved