6-2 单链表逆置(*) (10分)
已知单链表结点结构定义如下:
typedef struct _NODE_
{
int data;
struct _NODE_ *next;
} NODE;
说明:data 为数据域,next 为指针域。
单链表的结构定义如下:
typedef struct
{
int length;
NODE *head;
} LLIST;
说明:length 为单链表的长度,head 为头指针。
请编写函数,将带头结点的单链表逆置。
函数原型
void LListReverse(LLIST *list);
说明:参数 list 是指示线性表(单链表)的指针,函数将 list 所指线性表中数据元素的排列顺序颠倒过来。
裁判程序
int main()
{
LLIST a;
LListCreate(&a);
LListInput(&a);
LListOutput(&a);
putchar('\n');
LListReverse(&a);
LListOutput(&a);
putchar('\n');
LListDestroy(&a);
return 0;
}
说明:LListCreate 函数创建单链表,LListInput 函数输入单链表,LListOutput输出单链表,LListDestroy 函数销毁单链表。
输入样例
( 28, 47, 79, 52, 36 )
输出样例
( 28, 47, 79, 52, 36 )
( 36, 52, 79, 47, 28 )
AC代码
void LListReverse(LLIST *list){
NODE *p, *q;
NODE *zc=list->head;
p = zc->next;
zc->next = NULL;
while(p != NULL)
{
q = p;
p = p->next;
q->next = zc->next;
zc->next = q;
}
}
- 只写这一个函数就行哦 其他的在裁判程序里会给出,就是不告诉你呢~
呜呜呜测试都没法测试 - 编译器只有C(gcc 6.5.0)不兼容nullptr,要用NULL