| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1133 人关注过本帖
标题:程式问题
只看楼主 加入收藏
suckdog
Rank: 1
等 级:新手上路
帖 子:130
专家分:0
注 册:2007-9-19
结帖率:41.67%
收藏
 问题点数:0 回复次数:10 
程式问题
我这个程式现在要按照从小到大的顺序排应该怎么弄呢? 现在它好像不能按顺序排


struct nodetype
{
    int adata;
    struct nodetype *ptr;
};

int main()
{
      struct nodetype *start, *lastentry, *entry, *newnode, *first, *second;
      int info, akey, aflag;

      start=new nodetype;
      start->ptr=NULL;
      lastentry=start;

      cout<<"input an integer value, '999' to exit";
      cout<<endl;
      cin>>info;
      cout<<endl;
      while(info != 999)
      {
        newnode=new nodetype;
        newnode->adata = info;
        newnode->ptr = NULL;
        lastentry->ptr = newnode;
        lastentry= newnode;
        cout<<"input an integer value, '999' to exit";
        cout<<endl;
        cin>>info;
        cout<<endl;
      }

      entry=start->ptr;
      cout<<"you just entered:\n";
      while (entry!=NULL)
      {
        cout<<entry->adata<<endl;
        entry=entry->ptr;

      }
      cout<<endl;

      do                            // 这里就是我做排列顺序的地方, 帮我从新便一下, 我不知哪里不对
      {
        aflag=0;
        first=start->ptr;
        second=first->ptr;
        cout<<"after sorting:\n";
            if(first->adata>second->adata)
            {
                aflag++;
                first=first->ptr;
                second=second->ptr;
            }
            else if (first->adata<=second->adata)
            {
                first=first->ptr;
                second=second->ptr;
            }
      }while((aflag==1)&&(second->ptr!=NULL));

      entry=start->ptr;
      while (entry!=NULL)
      {
        cout<<entry->adata<<endl;
        entry=entry->ptr;

      }
      cout<<endl;


      cout<<endl<<"Enter a number you want to search."<<endl;
      cin>>akey;
      entry=start->ptr;
      while ((akey != entry->adata) && (entry->ptr != NULL))
      {
        entry=entry->ptr;
      }
      if (akey==entry->adata)
      {
        cout<<"found"<<endl;
      }
      else
      {
        cout<<"not found"<<endl;
      }
      system("PAUSE");
      return 0;
}
搜索更多相关主题的帖子: 程式 
2008-05-17 12:58
suckdog
Rank: 1
等 级:新手上路
帖 子:130
专家分:0
注 册:2007-9-19
收藏
得分:0 
自己顶一下
2008-05-18 09:29
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
收藏
得分:0 
链表排序么????可以直接交换结点值而不修改结点的连接顺序....

樱花大战,  有爱.
2008-05-18 09:57
Aegisys
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2008-5-10
收藏
得分:0 
晕,把First和Second两个指针搞了一通,好像链表还是原样...
2008-05-18 13:17
suckdog
Rank: 1
等 级:新手上路
帖 子:130
专家分:0
注 册:2007-9-19
收藏
得分:0 
对,现在是原样,现在谁把那个地方从写一下,我看看哪里不对, 光说不清楚。
2008-05-19 05:19
dubaoshi
Rank: 1
等 级:新手上路
帖 子:118
专家分:0
注 册:2006-9-22
收藏
得分:0 
我周六看了好久,加上今天又调了2个小时,终于算是成功了,但肯定效率不高:(
你先试一下吧。
排序部分我是这样改的:
      do                            // 这里就是我做排列顺序的地方, 帮我从新便一下, 我不知哪里不对
      {

            if(first->adata>second->adata)
            {

                temp=first->adata;//加了个临时变量temp
                first->adata=second->adata;
                second->adata=temp;
                first=start->ptr;//在这里就又可以从头对比了
                second=first->ptr;
            }
            else//这里就不加东西了
            {
                first=first->ptr;
                second=second->ptr;
            }
      }while(second!=NULL);这里把标志给去掉了


累死啦~~~

人行善,福虽未至,祸已远离;人行恶,祸虽未至,福已远离.
2008-05-20 11:47
dubaoshi
Rank: 1
等 级:新手上路
帖 子:118
专家分:0
注 册:2006-9-22
收藏
得分:0 
虽然是能运行了,但这个链表我还都不大懂:(
用new建的这个链表在退出程序时,并没有回收内存啊,呵呵~~

人行善,福虽未至,祸已远离;人行恶,祸虽未至,福已远离.
2008-05-20 11:53
suckdog
Rank: 1
等 级:新手上路
帖 子:130
专家分:0
注 册:2007-9-19
收藏
得分:0 
你的程式我试了一下,成功一般, 我输入 3,2,1, 它输出 2,3,1, 很明显没有回头继续排列
2008-05-20 12:11
dubaoshi
Rank: 1
等 级:新手上路
帖 子:118
专家分:0
注 册:2006-9-22
收藏
得分:0 

怎么会呢?在我这里是完全正常的啊。
如下动画所示:
图片附件: 游客没有浏览图片的权限,请 登录注册

有问题再交流啊~

人行善,福虽未至,祸已远离;人行恶,祸虽未至,福已远离.
2008-05-20 13:28
dubaoshi
Rank: 1
等 级:新手上路
帖 子:118
专家分:0
注 册:2006-9-22
收藏
得分:0 
完整程序如下:
#include<iostream>

using namespace std;
struct nodetype
{
    int adata;
    struct nodetype *ptr;
};

int main()
{
      struct nodetype *start, *lastentry, *entry, *newnode, *first, *second;
      int info, akey, aflag,temp;

      start=new nodetype;
      start->ptr=NULL;
      lastentry=start;

      cout<<"input an integer value, '999' to exit";
      cout<<endl;
      cin>>info;
      cout<<endl;
      while(info != 999)
      {
        newnode=new nodetype;
        newnode->adata = info;
        newnode->ptr = NULL;
        lastentry->ptr = newnode;
        lastentry= newnode;
        cout<<"input an integer value, '999' to exit";
        cout<<endl;
        cin>>info;
        cout<<endl;
      }

      entry=start->ptr;
      cout<<"you just entered:\n";
      while (entry!=NULL)
      {
        cout<<entry->adata<<endl;
        entry=entry->ptr;

      }
      cout<<endl;

        first=start->ptr;
        second=first->ptr;
        cout<<"after sorting:\n";

      do                            // 这里就是我做排列顺序的地方, 帮我从新便一下, 我不知哪里不对
      {

            if(first->adata>second->adata)
            {

                temp=first->adata;
                first->adata=second->adata;
                second->adata=temp;
                first=start->ptr;
                second=first->ptr;
            }
            else
            {
                first=first->ptr;
                second=second->ptr;
            }
      }while(second!=NULL);

      entry=start->ptr;
      while (entry!=NULL)
      {
        cout<<entry->adata<<endl;
        entry=entry->ptr;

      }
      cout<<endl;


      cout<<endl<<"Enter a number you want to search."<<endl;
      cin>>akey;
      entry=start->ptr;
      while ((akey != entry->adata) && (entry->ptr != NULL))
      {
        entry=entry->ptr;
      }
      if (akey==entry->adata)
      {
        cout<<"found"<<endl;
      }
      else
      {
        cout<<"not found"<<endl;
      }
      return 0;
}
从上面的小动画也能看出,我是用C-FREE编译的,没有问题,刚才又用DEV-C++编译并运行了,也没有问题的。




[[it] 本帖最后由 dubaoshi 于 2008-5-20 13:32 编辑 [/it]]

人行善,福虽未至,祸已远离;人行恶,祸虽未至,福已远离.
2008-05-20 13:29
快速回复:程式问题
数据加载中...
 
   



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

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