少女122号
2021-03-18 23:39
采纳率: 66.7%
浏览 37

关于单链表拆分大于小于零的问题,不知道为什么只会判断链表的第一个值,不再继续判断,求解答!

#include<iostream>
using namespace std;

typedef struct LNode
{
	int data;
	struct LNode *next;
 } LNode,*linklist;
 
 
void double1(linklist &L)
{  linklist p,q1,q2,r1,r2;
	linklist r;
    int n;
	L=new LNode;
	L->next=NULL;
	r=L;
	//cout<<endl;
	cout<<"请输入链表长度:";
	cin>>n;
	cout<<"请输入"<<n<<"个数(同时带有正整数和负整数):"; 
		for(int i=0;i<n;i++)
		{   p=new LNode;
		    cin>>p->data;
			p->next=NULL;
	        r->next=p;
	        r=p;
	        cout<<p->data<<" ";
		}
    p=L->next;
    
    for(int i=0;i<n;i++) 
{
	if(p->data>0)
	{  { 
	    q1=new LNode;
        q1->next=NULL;
	//	r1->next=q1; 
	    r1=q1; //r1是尾指针 
	    cout<<"正数链表:";
	    //for(i=0;i<n;i++){
	    for(i=0;i<n;++i)
	    {
	    	r1->next=p;
	    	r1=p;
	    //	q1=L->next;
	    	p=L->next;
	    	cout<<r1->data<<" ";
		}
	}
	}
else{  { 
	    q2=new LNode;
        q2->next=NULL;
	//	r1->next=q1; 
	    r2=q2;  //r2也是尾指针 
	    cout<<"负数链表:";
	    //for(i=0;i<n;i++){
	    for(i=0;i<n;i++)
	    {
	    	r2->next=p;
	    	r2=p;
	    	//q2=L->next;
	    	p=L->next;
	    	
	    	cout<<r2->data<<" ";
	    	
		}
	}
}
}} 
 
 
int main(){
	linklist L;
	double1(L);
	
}

运行结果如下(只是对第一个数值进行乐判断,之后的数值并没有判断),求各位大佬解答,谢谢!

题目要求:

创建一个任意数值的单链表,拆分成两个链表,分别为大于0和小于0:

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

1条回答 默认 最新

相关推荐 更多相似问题