跪求 单链表编程答案 急急急啊啊啊!!

来源:百度知道 编辑:UC知道 时间:2024/09/23 16:36:53
“在一个单链表中,数据域有正整数,有负整数,且交叉连接,编程实现将数据域为正数的结点连在一起,数据域为负整数的结点连在一起,且仍为一个单链表。”
过两天就交作业了,偶不会呀!哪位高手能帮在下,感激涕零啊~~~~~!!!!!!!!
就剩80分,都送出去!谢谢啦。
运行输入数据后,就不能再运行啦!是指针的问题吗????

#include <iostream>
using namespace std;
struct node
{
int data;
node *next;
};
node *creat()
{
int i;
node *s,*p;
p=new node;
p->next=NULL;
while(cin>>i)//此处输入的时候是按ctrl+z结束的!!
{
s=new node;
s->data=i;
s->next=p->next;
p->next=s;
}
return p;
}
node* del(node *d)
{
node *p=d->next;
d->next=p->next;
delete p;
return d;
}
void f(node *h,int n)
{
while(h->next!=NULL)h=h->next;
node *p=new node;
p->data=n;
p->next=h->next;
h->next=p;
}
int main()
{
node *head=creat();
node *s=head,*p=head;
while(s->next!=NULL)s=s->next;
node *q;
while(p!=s)
{
if(p->data>=0){q=p;p=p->next;}
else
{
f(head,p->data);
p=del(q);
}
}
p=head->next;
while(p->next!=NULL)
{