| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1371 人关注过本帖
标题:从键盘上输入一批非零整数,采用带头结点的单链表存放, 将单链表中的所有正 ...
只看楼主 加入收藏
曲鑫
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-7-5
结帖率:0
收藏
已结贴  问题点数:20 回复次数:3 
从键盘上输入一批非零整数,采用带头结点的单链表存放, 将单链表中的所有正数放在链表的前面,所有负数放在后面, 并将单链表输出
从键盘上输入一批非零整数,采用带头结点的单链表存放,
将单链表中的所有正数放在链表的前面,所有负数放在后面,
并将单链表输出
搜索更多相关主题的帖子: 链表 单链 结点 正数 负数 
2010-07-05 15:47
parkour
Rank: 2
等 级:论坛游民
帖 子:63
专家分:39
注 册:2009-1-3
收藏
得分:6 
你可以先定义一个值为0的链表节点

大于0的方前面

小于0的放后面

完了删除0节点就ok了
2010-07-05 20:36
do8do8do8
Rank: 10Rank: 10Rank: 10
来 自:沙滩
等 级:贵宾
威 望:17
帖 子:366
专家分:1845
注 册:2010-7-2
收藏
得分:6 
吃鹅吃柳又爱我吧
#include <stdio.h>
#include <stdlib.h>
struct list{
    int data;
    struct list *next;
};
typedef struct list  p;
typedef p *pnext;

void insert(pnext head,int d)
{
   pnext newnode,phead,ptr;
   phead=head;
   
   newnode=(pnext)malloc(sizeof(p));
   newnode->data=d;
   if(phead->next==NULL)
   {
       phead->next=newnode;
       newnode->next=NULL;
   }
   else if(d>0)
   {
     newnode->next=phead->next;
     phead->next=newnode;
   }
   else
   {  ptr=head;
      while(ptr->next!=NULL)
         ptr=ptr->next;
        
        ptr->next=newnode;
        newnode->next=NULL;
   }
}
void pfree(pnext head)
{    pnext ptr;
    while(head->next!=NULL)
    {    ptr=head;
    head=head->next;
       free(ptr);
    }  
}
void main()
{
  int d;   
  pnext head;
  pnext ptr;
  printf("please input datas,input -1 end\n");
  head=(pnext)malloc(sizeof(p));
  head->next=NULL;
  do{
      scanf("%d",&d);
      insert(head,d);
  }while(d!=-1);
   
  ptr=head;
  while(ptr->next!=NULL)
  {printf(" %d ",ptr->next->data);
      ptr->next=ptr->next->next;
  }
  pfree(head);
}

学C语言从底层开始,学编程从问题开始,一日学会C!!!
2010-07-06 14:17
pbreak
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:83
专家分:558
注 册:2007-5-10
收藏
得分:6 
程序代码:
struct _node
{
    long data;
    _node *next;
};

bool InsertList(_node **_head,_node **_tail,long _data)
{
    if(_head == NULL || _tail == NULL)
        return false;
    _node *p;
    p = (_node*)malloc(sizeof(_node));
    p->data = _data;
    if(_data > 0)
    {
        p->next = *_head;
        *_head = p;
    }
    else
    {
        p = (_node*)malloc(sizeof(_node));
        p->data = _data;
        (*_tail)->next = p;
        p->next = NULL;
        *_tail = p;
    }
    return true;
}

int main(int argc, char* argv[])
{
    _node *head,*tail,*p,*temp;
    long int data;
    head = (_node*)malloc(sizeof(_node));
    head->next = NULL;
    printf("please input the first node:");
    scanf("%d",&head->data);
    tail = head;
    do
    {
        printf("please insert a node:");
        scanf("%d",&data);
        if(data)
        {
            InsertList(&head,&tail,data);
        }
    } while (data);
    p = head;
    while(p != NULL)
    {
        printf("%d\t",p->data);
        temp = p;
        p = p->next;
        free(temp);
    }
    return 0;
}
2010-07-06 16:24
快速回复:从键盘上输入一批非零整数,采用带头结点的单链表存放, 将单链表中的 ...
数据加载中...
 
   



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

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