标题:求大神! 链表转置有问题 转置后只能输出两个数....
只看楼主
滚落的石子
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



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




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

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