链表节点定义为: 编程实现:输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算: 输入输出示例:括号内为说明 输入: 输出: 以下是我的代码:#include<iostream> }; int main() int i=0; for(i=0;i<repeat;i++) } } return 0; |
|
35分 |
修改如下:
#include<stdlib.h> #include<string.h> #define LEN sizeof(struct Node) using namespace std; typedef struct Node { int data; struct Node *next; }Node; Node *createList() { int data; Node *head = (Node*)malloc(LEN); Node *p = head; while (scanf("%d", &data) && -1 != data) { p->next= (Node*)malloc(LEN); p = p->next; p->data = data; } p->next = NULL; return head; } Node *deleteOddNode(Node *head) { Node *p, *q; p = head; q = head->next; do { if (q->data % 2) { p->next = q->next; free(q); q = p->next; } else { p = q; q = q->next; } } while (q); return head; } void printList(Node *head) { Node *p = head->next; while (p) { printf("%2d", p->data); p = p->next; } } int repeat; int main(void) { scanf("%d", &repeat); Node *head; while (repeat--) { head = createList(); head = deleteOddNode(head); printList(head); printf("\n"); } return 0; } //2 //1 2 3 4 5 6 7 -1 // 2 4 6 //1 3 5 7 -1 // |
5分 |
楼上这改得也太多了,其实,楼主只需要把判断语句移动到while一进来做就可以了,因为你输入了两次,才做第一次判断。
|
题意是:“建立一个单向链表,将其中的奇数值结点删除后输出”先建链表,再删除节点,后输出 |