| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 536 人关注过本帖
标题:求大神! 链表转置有问题 转置后只能输出两个数....
取消只看楼主 加入收藏
滚落的石子
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2013-11-20
结帖率:50%
收藏
 问题点数:0 回复次数:2 
求大神! 链表转置有问题 转置后只能输出两个数....
#include <iostream>

typedef struct student   //记住前面要加typedef
{
    int grade;
    student*next;
}list;

void set_list(list* &head,int a[],int n) //前插入法
{
    list *p;
    head=new list;
    head->next=NULL;
   
    for (int i=0;i<n;++i)
    {    p=new list;
        p->grade=a[i];
        p->next=head->next;
        head->next=p;
    }
   
}
void print_list(list *head)
{
    list*p=head->next;
    while(p!=NULL)
    {
        std::cout<<p->grade<<"\t";
        p=p->next;
    }
    std::cout<<std::endl;
}
bool InverseList(list*&L) //链表转置
{
    if (L->next->next==NULL)
    {return false;
    }

    list*p=L->next,*q;
    q=p->next;
    while (q!=NULL)
    {
        p->next=q->next;
        q->next=p;
        L->next=q;
        q=p->next;
    }
    return true;
}
int main()
{
    list *head;
    int a[]={1,2,5,4,4,4,7};
    set_list(head,a,7);
    print_list(head);
    InverseList(head);
    print_list(head);
}
搜索更多相关主题的帖子: include 插入法 
2014-03-09 22:25
滚落的石子
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2013-11-20
收藏
得分:0 
这个到底有什么问题啊?原本一个链表怎么变得只有两个数据啦
2014-03-09 22:48
滚落的石子
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2013-11-20
收藏
得分:0 
哈哈 ,我想出来了,只需要将while循环改成下面就成了
 while (q!=NULL)
     {
         p->next=q->next;
         q->next=L->next;
         L->next=q;
         q=p->next;
     }
典型的头插入法!
2014-03-09 23:16
快速回复:求大神! 链表转置有问题 转置后只能输出两个数....
数据加载中...
 
   



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

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