独一无② 发表于 2015-12-28 00:16:33

链表问题

本帖最后由 独一无② 于 2016-1-26 14:36 编辑

将一数据链表中数据小于零的数都 转移到 正数前面

如输入 -x -x x x -x x
   输出-x -x -x x x x

如何转移 这部分想不出来,只会创建这部分

# include <stdio.h>
# include <stdlib.h>
struct node
{
        int data;
        struct node *next;
};
int main()
{
        struct node *head,*p,*q,*t;
        int i,j,k;
        char str;
        head=NULL;
        scanf("%d",&j);
        while(j--)
        {
                p=(struct node*)malloc(sizeof(struct node));
                scanf("%d",&i);
                p->data=i;
                p->next=NULL;
                if(head == NULL)
                  head=p;
      else
          q->next=p;
      q=p;
        }
        //这里转移不会
        t=head;
        while(t != NULL)
        {
                   printf("%d ",t->data);
                t=t->next;
        }
}


求思路,大神帮帮忙

littlestar 发表于 2015-12-28 00:16:34

其实可以在插入的时候就操作的 用两个指针 头top和尾rear如果输入是负数 就改变头指针 如果是正数 就改变尾指针 例如 插入 2 -3 -2 4 -2 top rear都先初始化为null 然后第一次插入时 top=rear=p后面的插入 如果是负数 就是p->next=top;top=p; 如果是正数 就是 rear->next= p; rear=p;这样子就可以了如果是插入过程有要求是升序就加个判断就可以了

独一无② 发表于 2015-12-28 12:28:50

谁帮忙解答吗?

输入 如 1 -2 -3 4 5 -6
输出      -2 3 -6 1 4 5

jewen 发表于 2015-12-29 19:57:02

两个指针,一个用于遍历链表,一个用于记录排序后最后一个负数的位置,遍历的指针找到负数就把它排到记录的那个指针后面。大体的思路

独一无② 发表于 2015-12-30 22:40:40

jewen 发表于 2015-12-29 19:57
两个指针,一个用于遍历链表,一个用于记录排序后最后一个负数的位置,遍历的指针找到负数就把它排到记录的 ...

排序后,要是一排序,好像就会不对吧:cry

独一无② 发表于 2015-12-31 21:22:34

大神 求帮忙 @ryxcaixia@小人@更多大神

jewen 发表于 2016-1-2 21:37:11

你的输出没要求排序啊

独一无② 发表于 2016-1-4 23:28:27

jewen 发表于 2016-1-2 21:37
你的输出没要求排序啊

不是,你不是说   一个用于记录排序后最后一个负数的位置    这里的排序,要是一排序,不就乱了吗

zerco 发表于 2016-1-10 16:30:14

两个指针,一个用于遍历链表,一个用于记录排序后最后一个负数的位置,遍历的指针找到负数就把它排到记录的那个指针后面。大体的思路

独一无② 发表于 2016-1-10 16:49:44

一个用于记录排序后最后一个负数的位置    这里的排序 是什么意思

独一无② 发表于 2016-1-10 16:50:16

zerco 发表于 2016-1-10 16:30
两个指针,一个用于遍历链表,一个用于记录排序后最后一个负数的位置,遍历的指针找到负数就把它排到记录的 ...

一个用于记录排序后最后一个负数的位置    这里的排序 是什么意思

浅唱19913 发表于 2016-1-21 18:08:33

想看

独一无② 发表于 2016-2-1 20:57:58

littlestar 发表于 2016-2-1 17:09
其实可以在插入的时候就操作的 用两个指针 头top和尾rear如果输入是负数 就改变头指针 如果是正数 就改变 ...

O(∩_∩)O谢谢,懂了~~

千亩计者 发表于 2016-8-16 23:20:41

如果是负数 就是p->next=top;top=p
页: [1]
查看完整版本: 链表问题