| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 498 人关注过本帖, 1 人收藏
标题:单链表的问题,求指教
只看楼主 加入收藏
小笨蛋一个
Rank: 1
等 级:新手上路
帖 子:13
专家分:5
注 册:2011-10-7
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:9 
单链表的问题,求指教
这个是求一个单链表l1中的奇数存入表l3,偶数存入表l2;然后原样输出l1;但是输出结果却是l1的逆序还有,l2,l3在构造的时候为什么不加0就是错误的,加了0,总输出;0
图片附件: 游客没有浏览图片的权限,请 登录注册

#include <iostream.h>
class jd
{
public:
   jd(int n);
    int data;
    jd *next;
};
jd::jd(int n)
{
    data=n;
    next=NULL;
}
class list
{
public:
    list();
    list(int n);
    insert(int n);
    jd *head;
    int length;
disp();
};
list::list()
{
    head=NULL;
    length=0;
}
list::list(int n)
{
head=new jd(n);
length=1;
}
list::insert(int n)
{
    jd *p=new jd(n);
    p->next=head;
    head=p;
    length++;
}
list::disp()
{
    jd *p=head;
for(int i=0;i<=length;i++)
{
    if(p!=NULL)
    {
        cout<<p->data<<" ";
        p=p->next;
    }}
    cout<<endl;
}
void main()
{
list l1(0);
list l2(0);
list l3(0);
int a;
cout<<"输入链表数据,以回车结束"<<endl;

while(!(a==0))
{
    cin>>a;
l1.insert(a);
}
jd *p;
p=l1.head;
while(p)
{
    if(p->data%2)
{
    l2.insert(p->data);
}
else
{
    l3.insert(p->data);
}
p=p->next;
}

l1.disp();
l2.disp();
l3.disp();
}
搜索更多相关主题的帖子: include public insert 
2011-10-07 16:41
小笨蛋一个
Rank: 1
等 级:新手上路
帖 子:13
专家分:5
注 册:2011-10-7
收藏
得分:0 
没人理我么?
2011-10-07 16:50
小笨蛋一个
Rank: 1
等 级:新手上路
帖 子:13
专家分:5
注 册:2011-10-7
收藏
得分:0 
还是没人理?
2011-10-07 18:09
naruto01
Rank: 4
等 级:业余侠客
帖 子:103
专家分:280
注 册:2011-5-23
收藏
得分:20 
程序代码:
#include <iostream>
using namespace std;

class jd
{
public:
    jd(int n);
    int data;
    jd *next;
};

jd::jd(int n)
{
    data=n;
    next=NULL;
}

class list
{
public:
    list();
    list(int n);
    void insert(int n);
    void disp();
    jd *head;
    int length;
};

list::list()
{
    head=NULL;
    length=0;
}

list::list(int n)
{
    head=new jd(n);
    length=1;
}

void list::insert(int n)
{
    jd *p=new jd(n);
    p->next=head;
    head=p;
    length++;
}

void list::disp()
{
    jd *p=head;
    for(int i=1;i<=length;i++)
    {
        if(p!=NULL)
           {
               cout<<p->data<<" ";
               p=p->next;
           }
    }
    cout<<endl;
}

int main()
{
    list l1;
    list l2;
    list l3;
    int a;
    cout<<"输入链表数据,以回车结束"<<endl;
    cin>>a;
    while(a!=0)
    {
        l1.insert(a);
        cin>>a;
    }
    jd *p;
    p=l1.head;
    while(p)
    {
         if(p->data%2)
        {
              l2.insert(p->data);
        }
        else
        {
               l3.insert(p->data);
        }
        p=p->next;
    }

    l1.disp();
    l2.disp();
    l3.disp();
}
改了改,有0是因为main函数里面的前三句你通过构造函数加进去的。倒序是因为你Insert的方式。。

[ 本帖最后由 naruto01 于 2011-10-7 18:26 编辑 ]
2011-10-07 18:25
小笨蛋一个
Rank: 1
等 级:新手上路
帖 子:13
专家分:5
注 册:2011-10-7
收藏
得分:0 
回复 4楼 naruto01
请详细的说下why好么?
2011-10-07 20:57
小笨蛋一个
Rank: 1
等 级:新手上路
帖 子:13
专家分:5
注 册:2011-10-7
收藏
得分:0 
insert的那个问题
2011-10-07 20:58
naruto01
Rank: 4
等 级:业余侠客
帖 子:103
专家分:280
注 册:2011-5-23
收藏
得分:0 
每次insert的节点都是在head插入,也就类似于栈的方式,后入先出。
可以画个图,很明显。
2011-10-07 21:36
小笨蛋一个
Rank: 1
等 级:新手上路
帖 子:13
专家分:5
注 册:2011-10-7
收藏
得分:0 
回复 7楼 naruto01
能给我个代码么,写成队列那种插入~我怎么想都想不出来
2011-10-08 17:33
naruto01
Rank: 4
等 级:业余侠客
帖 子:103
专家分:280
注 册:2011-5-23
收藏
得分:0 
程序代码:
#include <iostream>
using namespace std;

class jd
{
public:
    jd(int n);
    int data;
    jd *next;
};

jd::jd(int n)
{
    data=n;
    next=NULL;
}

class list
{
public:
    list();
    list(int n);
    void insert(int n);
    void disp();
    jd *head;
    int length;
};

list::list()
{
    head=new jd(0);
    length=0;
}

list::list(int n)
{
    head=new jd(n);
    length=1;
}

void list::insert(int n)
{
    jd *p;
    p=head;
    while(p->next)
        p=p->next;
    p->next=new jd(n);
    length++;
}

void list::disp()
{
    jd *p=head->next;
    for(int i=1;i<=length;i++)
    {
        if(p!=NULL)
           {
               cout<<p->data<<" ";
               p=p->next;
           }
    }
    cout<<endl;
}

int main()
{
    list l1;
    list l2;
    list l3;
    int a;
    cout<<"输入链表数据,以回车结束"<<endl;
    cin>>a;
    while(a!=0)
    {
        l1.insert(a);
        cin>>a;
    }
    jd *p;
    p=l1.head->next;
    while(p)
    {
         if(p->data%2)
        {
              l2.insert(p->data);
        }
        else
        {
               l3.insert(p->data);
        }
        p=p->next;
    }

    l1.disp();
    l2.disp();
    l3.disp();
}


一些地方做了改动,值得优化的是在list类中,增加一个指向尾节点的信息,可以提高insert的效率。
2011-10-08 18:39
小笨蛋一个
Rank: 1
等 级:新手上路
帖 子:13
专家分:5
注 册:2011-10-7
收藏
得分:0 
回复 9楼 naruto01
3q,偶爱你~
2011-10-09 18:13
快速回复:单链表的问题,求指教
数据加载中...
 
   



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

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