给定程序中,函数fun的功能是将带头结点的单向链表逆置,即若原链表中从头至尾结点数据与依次为2、4、6、8、10,逆置后,从头至尾结点数据依次为10、8、6、4、2。 请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 试题程序。 #define N 5 typedef struct node { int data; struct node *next; } NODE; void fun(NODE *h) { NODE *p, *q, *r; p = h-> 1 ; if (p == 2 ) return; q = p->next; p->next = NULL; while (q) { r = q->next; q->next = p; p = q; q = 3 ); } h->next = p; } NODE *creatlist(int a[ ]) { NODE *h, *p, *q; int i; h = (NODE *)malloc(sizeof(NODE)); h->next = NULL; for (i = 0; i < N; i++) { q = (NODE *)malloc(sizeof(NODE)); q->data = a[i]; p->next = q; p = q; } } return h; } void outlist(NODE *h) { NODE *p; p = h->next; if (p == NULL) printf("The list is NULL!\n"); else { printf("\nHead "); do { printf("->%d", p->data); p = p->next; } while (p != NULL); printf("->End\n"); } } main( ) { NODE *head; int a[N] = {2, 4, 6, 8, 10}; head = creatlist(a); printf("\nThe original list:\n"); outlist(head); fun(head); printf("\nThe list after inverting :\n"); outlist(head); }