您的位置:首页 > 其它

链表——逆置

2016-05-02 19:49 183 查看
给定程序中,函数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
= {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);
}


答案:

你的答案 (正确)

1 next

2 NULL

3 r
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: