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