| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 567 人关注过本帖
标题:关于链表的个小问题!!不吝赐教!!谢谢!!
只看楼主 加入收藏
洪溪
Rank: 2
等 级:论坛游民
帖 子:42
专家分:34
注 册:2010-9-7
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
关于链表的个小问题!!不吝赐教!!谢谢!!
程序的目的是把两个小的链表连接起来,形成一个新的链表,但连接时出了问题,编译器的提示我觉得没道理啊...真不明白了..想了好久还是想不通...希望看到的你行行好..帮我一下..感激不尽..


#include<iostream>
using namespace std;
template<typename NODETYPE> class List;

template<typename NODETYPE>
class ListNode
{
    friend class  List<NODETYPE>;
    public:
        ListNode(NODETYPE &);        
    private:
        ListNode<NODETYPE> *nextPtr;
        NODETYPE data;
};//链表结点定义

template<typename NODETYPE>
ListNode<NODETYPE>::ListNode(NODETYPE &info )
:data( info),nextPtr(0)
{
}

template<typename NODETYPE>
class List
{
    public:
        List();
        void insertFromFirst(NODETYPE);
        void insertFromLast(NODETYPE);
        void removeFromFirst(NODETYPE &);
        void removeFromLast(NODETYPE &);
        void print();
    private:
        ListNode<NODETYPE> *firstPtr;
        ListNode<NODETYPE> *lastPtr;
};//链表的定义

template<typename NODETYPE>
List<NODETYPE>::List()
{
    firstPtr=lastPtr=0;
}

template<typename NODETYPE>
void List<NODETYPE>::insertFromFirst(NODETYPE values)
{
    ListNode<NODETYPE> *newPtr=new ListNode<NODETYPE>(values);
    if(firstPtr==0)
        firstPtr=lastPtr=newPtr;
    else
    {newPtr->nextPtr=firstPtr;
    firstPtr=newPtr;}
}

template<typename NODETYPE>
void List<NODETYPE>::insertFromLast(NODETYPE values)
{
    ListNode<NODETYPE> *newPtr=new ListNode<NODETYPE>(values);
    if(lastPtr==0)
        firstPtr=lastPtr=newPtr;
    else
    {
        lastPtr->nextPtr=newPtr;
        lastPtr=newPtr;
    }
   
}

template<typename NODETYPE>
void List<NODETYPE>::removeFromFirst(NODETYPE &temp)
{
    ListNode *tempPtr=firstPtr;
    if (tempPtr==lastPtr)
        firstPtr=lastPtr=0;
    else
        firstPtr=firstPtr->nextPtr;   
    temp=tempPtr->data;   
    delete tempPtr;
}

template<typename NODETYPE>
void List<NODETYPE>::removeFromLast(NODETYPE &temp)
{
    ListNode<NODETYPE> *tempPtr=lastPtr;
    ListNode<NODETYPE> *loop=firstPtr;
    if(firstPtr==0)
        firstPtr=lastPtr=0;
    else
    {
        while (loop->nextPtr!=lastPtr)
            loop=loop->nextPtr;        
    }
    lastPtr=loop;
    temp=tempPtr->data;
    delete tempPtr;
}

template<typename NODETYPE>
void List<NODETYPE>::print()
{
    ListNode<NODETYPE> *printPtr;
    printPtr=firstPtr;
        while (printPtr!=0)
        {
            cout<<printPtr->data<<' ';
            printPtr=printPtr->nextPtr;
        }
        cout<<endl;
        
}

void main()
{
    List<char> list1,list2, newlist;
    char a='a',b='b',c;
    list1.insertFromFirst(a);
    list2.insertFromLast(b);
    list1.lastPtr->nextPtr=list2.firstPtr;//...........
    newlist.firstPtr=list1.firstPtr;//....这三行要把两个链表连接起来....
    newlist.lastPtr=list2.lastPtr;//.......
    newlist.print();
   
}
搜索更多相关主题的帖子: 链表 不吝 
2010-12-13 13:06
niufujun
Rank: 2
等 级:论坛游民
帖 子:16
专家分:37
注 册:2009-4-25
收藏
得分:10 
来自外部的任何访问类的private都是非法的。把private删除就行,或者两个链表连接部分写成一个类的成员函数实现也行。

2010-12-13 14:58
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:10 
链表类.rar (1.9 KB)

参考一下我写的

                                         
===========深入<----------------->浅出============
2010-12-13 17:56
洪溪
Rank: 2
等 级:论坛游民
帖 子:42
专家分:34
注 册:2010-9-7
收藏
得分:0 
回复 楼主 洪溪
电脑坏了好几天现在才修好气死了  靠!!你说的对了!我怎么搞的啊 怎么现在还犯这种无知啊!! 谢谢伙计!!谢谢。。
2010-12-17 10:18
洪溪
Rank: 2
等 级:论坛游民
帖 子:42
专家分:34
注 册:2010-9-7
收藏
得分:0 
回复 3楼 laoyang103
我发觉你真行啊 !! 感觉你什么都会。。服啦。。看来要多跟你学两招啦。。谢谢你大侠。。。
2010-12-17 10:26
快速回复:关于链表的个小问题!!不吝赐教!!谢谢!!
数据加载中...
 
   



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

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