输入若干个正整数(输入-1为结束标志),建立一个单向链表,将其中的偶数值结点删除后输出。

编程实现:输入若干个正整数(输入-1为结束标志),建立一个单向链表,将其中的偶数值结点删除后输出。链表节点定义为: struct Node{ int data; struct Node *next; }

输入输出示例:括号内为说明

输入样例:
1 2 3 4 5 6 7 -1
输出样例:
1 3 5 7

1个回答

#include "stdio.h"
#include "stdlib.h"

typedef struct Node { int data; struct Node *next; } LList;

int main()
{
    LList * header = NULL;
    Node * p;
    while (true)
    {
        int input;
        scanf("%d", &input);
        if (input == -1) break;
        if (!header)
        {
            header = (Node *)malloc(sizeof(Node));
            p = header;
            header->data = input;
            header->next = NULL;
        }
        else
        {
            p->next = (Node *)malloc(sizeof(Node));
            p = p->next;
            p->data = input;
            p->next = NULL;
        }
    }
    p = header;
    Node * preP = NULL;
    while (p)
    {
        if (p->data % 2 == 0)
        {
            Node * temp;
            if (!preP)
            {
                temp = header;
                header = header->next;
                p = header;
                free(temp);
            }
            else
            {
                temp = p;
                p = p->next;
                preP->next = p;
                free(temp);
            }
        }
        preP = p;
        p = p->next;
    }
    p = header;
    int i = 0;
    while (p)
    {
        printf("%d ", p->data);
        p = p->next;
    }
    printf("\n");
    return 0;
}

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

相似问题

3
用C语言实现从键盘输入一组非零整数(以输入零作为输入结束的标志)
2
用python 从键盘输入非0整数,以输入0为输入结束标志,求平均值,统计正数负数个数
0
输出一个正整数K,使得K与S异或值最大。怎么利用C程序语言的编写技术来实现
0
一张正整数组成的数表,两两相加得到n(n-1)/2个和用C语言的计算的问题
1
把两个有序排列的单向整数链表合并成一个有序排列的的整数链表?
0
输出一个正整数K,使得K与S异或值最大如何利用C语言的代码的编写的技巧来实现的呢?
1
如何采用C语言的程序算法编写技术计算方程x^2+y^2+z^2= num的一个正整数解
1
正整数A是否能被正整数B整除的判断的算法,怎么使用C语言的程序的编写的代码方式解决这个判断
0
正整数A是否能被正整数B整除的研究怎么用C语言来做
0
给出s求出不定方程组的一组正整数解
2
c语言中怎么输入任意个整数,然后将它们存入一个数组?
3
【问题描述】 输入两个整数a(大于等于1且小于等于9)和n(大于等于1且小于等于80),编程求得并输出下面等式的值
3
C语言中以整数的形式输入一个char,我们没有办法,必须要先输入给一个整数,再交给那个char的类型。这句话如何理解???
2
C语言实现大数加法(正整数)
1
从键盘输入n(1<=n<=10)个正整数,用空格隔开,最后以整数-1表示输入结束。把n个整数(-1除外)存入数组,然后找出其中的最大值和最小值并输出。 【输入形式】
2
长度为10的整型数组,数组的10个数由键盘输入,输入非负整数n(n<10),将下标为n的元素从数组删除,并将其后的元素前移,输出删除一个元素后的数组内所有数据。
1
C语言 写一个程序,输入数量不确定的[0,9]范围内的整数,统计每一种数字出现的次数,输入-1表示结束。输入时用空格分隔数字就无法得出正确结果,但是用换行分隔数字就能够到正确答案,这是为什么?
2
C语言 写一个程序,输入数量不确定的[0,9]范围内的整数,统计每一种数字出现的次数,输入-1表示结束。输入时用空格分隔数字就无法得出正确结果,但是用换行分隔数字就能够到正确答案,这是为什么?
1
python 给定一个十进制整数N,求其对应2进制数中1的个数?
0
下标索引必须为正整数类型或逻辑类型。 出错 main3 (line 56) dw=I(PY1:PY2-8,PX1:PX2,:);