| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 808 人关注过本帖
标题:一道单链表的题,求高手帮我解决.
只看楼主 加入收藏
tujinlong
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-3-10
收藏
 问题点数:0 回复次数:2 
一道单链表的题,求高手帮我解决.
内容:在计算机上先输入一串正整数的序列。请编写一个程序,首先用链接表存储该序列。然后执行删除操作,即先从链表中找出最小的结点,删除它。然后再在剩余的链表中,找出最小的结点,再删除之。直至表空为止。
我编写的是:
#include "stdio.h"
#include "malloc.h"
# define LEN sizeof(struct number)

struct number
{long num;
 struct number *next;};
  int n,j;

 struct number *creat(void)
 {struct number *head;
  struct number *p1,*p2;
   n=0;
   p1=p2=(struct number*)malloc(LEN);
   printf("Please input positive numbers\n");
   scanf("%ld",&p1->num);
   head=NULL;
   while(p1->num!=0)
   {  n=n+1;
     if(n==1)head=p1;
     else p2->next=p1;
       p2=p1;
       p1=(struct number*)malloc(LEN);
       scanf("%ld",&p1->num); }
       p2->next=NULL;
        j=n;
       return(head);}

  void print(struct number *head)
    {struct number *p;
      printf("\nNow ,there are %d numbers\n ", n);
      p=head;
      if(head!=NULL)
      do {printf("%ld\t",p->num);
       p=p->next;}
       while(p!=NULL);}

  struct number *del(struct number *head,long min)
    {struct number *p1,*p2;

      if(head==NULL)
       printf("\nNo number\n");
      p1=head;
       min=p1->num;
       while(p1->next!=NULL)
       {p2=p1;
         p1=p2->next;
          if(min>=p1->num)
            min=p1->num;}
            if(p1==head) head=p1->next;
             else p2->next=p1->next;
             free(p1);
               printf("delete:%ld\n",min);
               n=n-1;
               return(head);}

main()
{struct number *head;
 int i;
 long min;

 head=creat();
   print(head);

   for(i=1;i<=j;i++)
     { del(head,min);
       print(head);}

   
    getch();
}
在运行出了的结果中不是我想要的结果,有那位高手看到了的话,帮我看看
搜索更多相关主题的帖子: 单链 
2008-04-06 11:25
daping
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-4-6
收藏
得分:0 
程序检查
struct number
{long num;
struct number *next;};
类型定义前要加typedef,大括号后面是不是要重新加一个名字?

printf("\nNow ,there are %d numbers\n ", n);n没有传过来,怎么输出?
 struct number *del函数里 while(p1->next!=NULL)的 ->next去掉试试,不然漏掉了p1循环到最后一个的情况
2008-04-06 15:30
tujinlong
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-3-10
收藏
得分:0 
谢拉
2008-04-06 18:12
快速回复:一道单链表的题,求高手帮我解决.
数据加载中...
 
   



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

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