| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 459 人关注过本帖
标题:单链表排序,除了交换他们的数据域来实现。能不能想结构体数组那样,直接交 ...
只看楼主 加入收藏
不玩虚的
Rank: 9Rank: 9Rank: 9
来 自:四川
等 级:贵宾
威 望:10
帖 子:331
专家分:1301
注 册:2012-12-9
结帖率:75%
收藏
 问题点数:0 回复次数:0 
单链表排序,除了交换他们的数据域来实现。能不能想结构体数组那样,直接交换对象。把单链表的结点给交换了来实现排序啊,求帮助!
#include<iostream>
using namespace std;
typedef struct lnode
{
    char name;//姓名
    int age;//年龄
 int data;//学号
    lnode *next;
}lnode,*linklist;
void createlist_tou(linklist &l,int n)
{
 l=new lnode;
 l->next=NULL;
 linklist p;
 cout<<"请输入单链表,到0为止:"<<endl;
 for(int i=n;i>0;i--)
 {   
  p=new lnode;
  cin>>p->data>>p->name>>p->age;
  p->next=l->next;
  l->next=p;
 }
}
linklist sort(lnode* l)
{
   lnode *s=l->next ,*p;
   while(s->next )
   {
    p=s->next ;
    while(p)
    {
     if(p->age>s->age )//这是通过交换数据域实现的,求大神帮忙,为啥写成lnode *t=p;p=s;s=t;,不能实现交换啊
     {
     int   t=p->age;
      p->age=s->age ;
      s->age=t;
      int t1=p->data;
        p->data=s->data ;
      s->data=t1;
      char t2=p->name;
            p->name=s->name;
            s->name=t2;
     }
     p=p->next ;
    }
    s=s->next ;
   }
   return l;
}
void display(linklist &l)
{
 linklist p;
 p=l->next;
 
 while(p!=NULL)
 {
  cout<<p->data<<" "<<p->name<<" "<<p->age<<" "<<endl;
  p=p->next;
 }
 cout<<endl;
}
void main()
{ int a;
 cout<<"请输入链表长度:"<<endl;
 cin>>a;
 linklist l;
createlist_tou(l,a);cout<<"前插法输出链表:"<<endl;
display(l);
cout<<"降序排列链表为:"<<endl;
l=sort(l);
 display(l);
}
搜索更多相关主题的帖子: next include 结构体 
2013-01-02 14:44
快速回复:单链表排序,除了交换他们的数据域来实现。能不能想结构体数组那样,直 ...
数据加载中...
 
   



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

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