|
链表节点定义为: 编程实现:输入一个正整数 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一进来做就可以了,因为你输入了两次,才做第一次判断。
|
|
题意是:“建立一个单向链表,将其中的奇数值结点删除后输出”先建链表,再删除节点,后输出 |
|