标题:写个小程序 大家帮梦分析下 什么地方出错的 实现不了功能呢
只看楼主
lj262765633
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-7-31
结帖率:0
已结贴  问题点数:20 回复次数:2 
写个小程序 大家帮梦分析下 什么地方出错的 实现不了功能呢

#include<iostream.h>

template <class T>
class List;
template <class T>
class Node
{T data;
 Node *next;
 public:
     Node(){next=NULL;}
     Node(T i,Node *p){data=i;next=p;}
     void dispnode()
     {cout<<data<<" ";
     }
     friend class List<T>;
 };
template <class T>
class List
{Node<T> *L;
public:
    List(){L=new Node<T>;}
    ~List()
    {Node<T> *p=L,*q=p->next;
     while(p->next!=NULL)
     {delete p;
      p=q;
      q=p->next;
     }
     delete p;
    }
    bool Listempty()
    {return (p->next==NULL);
    }
    int Listsize()
    {int n=0;
     Node<T> *p=L;
     while(p->next!=NULL)
     {n++;
     p=p->next;
     }
     return n;
    }
    void Listpush_back(T x)
    {Node<T> *p=L->next;
    Node<T> *s;
    while(p!=NULL)
    {p=p->next;
    }
    s=new Node<T>;
    s->data=x;
    p=s;
    }
    void Listpop_back()
    {Node<T> *p=L;
     for(int i=0;i<Listsize()-1;i++)
     {p=p->next;
     p=NULL;
     delete p;
     }
    }
    void dispList()
    {Node<T> *p=L->next;
    while(p!=NULL)
    {p->dispnode();
    p=p->next;
    }     
    }

};
int main()
{List<int> lst;
lst.Listpush_back(1);
lst.Listpush_back(2);
lst.dispList();
lst.Listpop_back();
lst.dispList();
return 1;
}
搜索更多相关主题的帖子: class next include public friend 
2011-07-31 15:41
jcw0812
Rank: 2
等 级:论坛游民
帖 子:6
专家分:20
注 册:2011-8-5
得分:20 
#include<iostream.h>

template <class T>class List;

template <class T>class Node//节点类 请数据公有化 不然后面就是错误
{
public:
    Node(){    next=NULL;}
    Node(T i){    data=i; next=NULL ;} //不知道原本这个函数有什么用?

    void dispnode()
    {
        cout<<data<<" ";
    }

    friend class List<T>;
    T data;             //这里和你定义的不同你自己想想;
    Node *next;
};

template <class T>class List
{
public:
    List():L(0){  /* L = new Node<T>; */ }// 你这里创建了节点和PUSHBACK 里创建的节点重复了;

    ~List()
    {
        for(Node<T> *p ; p = L;delete p){L = L->next ;} //我这里定义的意思和你的差不多 你多看看就懂了;
        /* Node<T> *p=L,*q=p->next;            //这个是你定义的;很乱的啊;
         while(p->next!=NULL)
            {
             delete p;
             p=q;
             q=p->next;
            }
         delete p; */
    }

    bool Listempty()
    {
        /* return (p->next==NULL); */  //不清楚你的p 是哪里定义的?
    }

    int Lsize() // 本来这个函数我想 定义一个静态整形数据在构造函数用于计算表的大小,想想还是不做大的改动吧;
    {
         int n=0;
            Node<T> *p=L;
         while(p->next!=NULL)
            {
                ++n;
                p=p->next;
            }
        return n;
     }

     void Listpush_back(T x)//要调用节点类里的私有数据?你想干什么?所以上面date写成公有的。
     {
         Node<T> *p=new Node<T>(x);
         p->data=x;
         p->next=NULL;
         if(L==0){ L=p;
         }else{
             Node<T> *A;
             for(A=L;A->next!=NULL;A=A->next);
             A->next=p;}
         /* Node<T> *s;
         while(p!=NULL)  // 你为什么不定义一个,指最向后一个节点的指针?
         {
             p=p->next;
         }
           s= new Node<T>;
         s->data = x;
         s->next = NULL; */
         /* p=s;不知道你这里有什么用?如果你有一个指向最后节点的指针 这里有赋值还差不多; */  
     }

     void Listpop_back() // 删除最后一个节点 哥哥你这里删掉几个节点了??
     {
         Node<T> *p=L;
         for(int i=0;i<Lsize()-1;i++)
         {
             p=p->next;
            
         }
         p->next=NULL;
         
     }

     void dispList()
     {
         Node<T> *p=L;//这里 只要定义指向表就可以了;
         while(p != NULL)
         {
             p->dispnode();
             p=p->next;
         }
     }   

private:
    Node<T> *L;
};

int main()
{
    List<int> lst;
    lst.Listpush_back(1);
    lst.Listpush_back(2);
    lst.dispList();
    lst.Listpop_back();
    cout<<endl;
    lst.dispList();
    return 1;
}
时间很忙没来得及细看 你看看 有些错误我给你标出来了  可以运行的 我在我电脑里面运行过  你自己试试吧!!
2011-08-05 11:29
jcw0812
Rank: 2
等 级:论坛游民
帖 子:6
专家分:20
注 册:2011-8-5
得分:0 
还有你的编程风格 很不好~ 我看的很乱 帮你理了一下 希望你以后的编程模式能改下 有些缩进什么的千万别偷懒啊!
2011-08-05 11:30



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-346485-1-1.html




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

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