|
35鱼币
本帖最后由 独一无② 于 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[50];
- 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;
- }
- }
复制代码
求思路,大神帮帮忙 |
最佳答案
查看完整内容
其实可以在插入的时候就操作的 用两个指针 头top和尾rear 如果输入是负数 就改变头指针 如果是正数 就改变尾指针 例如 插入 2 -3 -2 4 -2 top rear都先初始化为null 然后第一次插入时 top=rear=p 后面的插入 如果是负数 就是p->next=top;top=p; 如果是正数 就是 rear->next= p; rear=p;这样子就可以了 如果是插入过程有要求是升序就加个判断就可以了
|