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