用C++实现将一串数字输入一个链表再将这个链表中的奇偶数分开存储在两个链表中,最后输出

我是这样写的,最后输出不出来东西,求大佬帮忙
#include
using namespace std;
struct node
{
int date;
node * next;
};
node * createList(int n);
void printList(node *a);
int main()
{
int n;
node * a = NULL;
node * A = NULL;
node * B = NULL;
node * m = NULL;
node * i = NULL;
cin>>n;
if(n > 0)
a = createList(n);
node *p;
p = a;
int x;
x = 1;
int y;
y = 1;
node *Atail = NULL;
node *Btail = NULL;
while(p->next != NULL)
{

    if(p->date%2 == 1 && x == 1)
    {   

        B = new node; 
        Btail = new node; 
        B->date = p->date;
        Btail = B;
        x = x+1;
    }
    else if (p->date%2 == 1 && x != 1)
    {
        node *temp = new node;


        temp->date = p->date;
        Btail->next = temp;
        Btail = temp;
    }

    else if(p->date%2 == 0 && y == 1)
    {   

        A = new node; 
        Atail = new node; 
        A->date = p->date;
        Atail = A;
        y = y+1;
    }
    else
    {
        node *temp = new node;
        temp->date = p->date;
        Atail->next = temp;
        Atail = temp;
    }
    p = p->next;
}
Atail->next = NULL;
Btail->next = NULL;
printList(A);
cout<<endl;
printList(B);
return 0;

}
void printList(node *a)
{
node * c = a;
while (c->next != NULL)
{
cout<< c->date<<' ';
c = c->next;
}
}
node * createList(int n)
{
node * temp = NULL, * tail = NULL, * head = NULL;
int num;
cin>>num;
head = new node;
if (head == NULL)
{
return NULL;
}
else
{
head->date = num;

    tail = head;
}
for (int i = 0; i<n-1;i++)
{
    cin>>num;
    temp = new node;
    temp->date = num;
    tail->next = temp;
    tail = temp;
}
tail->next = NULL;
return head;

}

c++

1个回答

c++,可以考虑使用stl

#include <iostream>
#include <list>
using namespace std;

void print(list<int> lit)
{
    list<int>::iterator iter = lit.begin();
    for(;iter != lit.end();iter++)
        std::cout << *iter << " ";
    std::cout << endl;
}

int main()
{
    int n;
    std::cin >> n;
    list<int> srcList,evenList,oddList;
    for(int i=0;i<n;i++)
    {
        int temp;
        std::cin >> temp;
        srcList.push_back(temp);
    }
    list<int>::iterator iter = srcList.begin();
    for(;iter != srcList.end();iter++)
        if(*iter % 2 == 0)
            evenList.push_back(*iter);
        else
            oddList.push_back(*iter);

    std::cout<<"even list:";
    print(evenList);
    std::cout<<"odd list:";
    print(oddList);

    return 0;
}
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问

相似问题

0
c++基于链表储存的图的相关算法的验证
1
输入若干个正整数(输入-1为结束标志),建立一个单向链表,将其中的偶数值结点删除后输出。
1
C++设计一个循环链表,用来表示大整数
1
C++在链表递归的过程中使用临时节点并且置NULL,那么二叉树需要吗?
1
c++ 用链表怎么怎么算十个学生的三门成绩平均值
1
本人写了一个C++链表,但输入时却无法停止,求路过高人指点
1
用C++双链表实现的顺逆时针约瑟夫环出现段错误
1
C语言求助:输入一个字符串,将其中的字母字符输入一个链表,将其中的数字字符输入另一个链表。
2
关于C++链表指针问题,望解答
1
把两个有序排列的单向整数链表合并成一个有序排列的的整数链表?
1
小萌新在用C++写一个用数组元素创建一个新链表,创建了一个空表之后调用头插法函数时显示发生异常
1
c++ 来做链表(输入,打印出来),那里错了啊??
1
c++ 链表问题,如何将删除指定元素的代码修改为删除全部值为x的元素?
2
一个C++链表问题........
2
静态链表为什么实现不了数据反转,哪里错了,具体的代码如何实现?
4
C++链表头指针位置不知为什么出错
2
c++初学者:我的这行代码跑出来合并的链表为什么无法输出?
1
如何实现 链表的头结点是指针数组,再用二级指针调用?
2
Java语言编写程序一个链表,并且计算链表上所有数的和
1
关于C++二叉树遍历的问题