链表问题
本帖最后由 独一无② 于 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;
}
}
求思路,大神帮帮忙 其实可以在插入的时候就操作的 用两个指针 头top和尾rear如果输入是负数 就改变头指针 如果是正数 就改变尾指针 例如 插入 2 -3 -2 4 -2 top rear都先初始化为null 然后第一次插入时 top=rear=p后面的插入 如果是负数 就是p->next=top;top=p; 如果是正数 就是 rear->next= p; rear=p;这样子就可以了如果是插入过程有要求是升序就加个判断就可以了 谁帮忙解答吗?
输入 如 1 -2 -3 4 5 -6
输出 -2 3 -6 1 4 5 两个指针,一个用于遍历链表,一个用于记录排序后最后一个负数的位置,遍历的指针找到负数就把它排到记录的那个指针后面。大体的思路 jewen 发表于 2015-12-29 19:57
两个指针,一个用于遍历链表,一个用于记录排序后最后一个负数的位置,遍历的指针找到负数就把它排到记录的 ...
排序后,要是一排序,好像就会不对吧:cry 大神 求帮忙 @ryxcaixia@小人@更多大神 你的输出没要求排序啊 jewen 发表于 2016-1-2 21:37
你的输出没要求排序啊
不是,你不是说 一个用于记录排序后最后一个负数的位置 这里的排序,要是一排序,不就乱了吗 两个指针,一个用于遍历链表,一个用于记录排序后最后一个负数的位置,遍历的指针找到负数就把它排到记录的那个指针后面。大体的思路 一个用于记录排序后最后一个负数的位置 这里的排序 是什么意思 zerco 发表于 2016-1-10 16:30
两个指针,一个用于遍历链表,一个用于记录排序后最后一个负数的位置,遍历的指针找到负数就把它排到记录的 ...
一个用于记录排序后最后一个负数的位置 这里的排序 是什么意思 想看 littlestar 发表于 2016-2-1 17:09
其实可以在插入的时候就操作的 用两个指针 头top和尾rear如果输入是负数 就改变头指针 如果是正数 就改变 ...
O(∩_∩)O谢谢,懂了~~ 如果是负数 就是p->next=top;top=p
页:
[1]