本文最后更新于1943天前,其中的信息可能已经有所发展或是发生改变。
本题要求实现一个函数,对带有头结点的单链表进行就地逆置。
函数接口定义:
void reverse ( LinkList L );
L是带头结点的单链表的头指针。
裁判测试程序样例:
#include <stdio.h> #include <stdlib.h> typedef int ElemType; typedef struct LNode { ElemType data; struct LNode *next; }LNode,*LinkList; LinkList Create(); void print(LinkList L); void reverse ( LinkList L); int main() { LinkList L = Create(); print(L); printf("\n"); reverse(L); print(L); return 0; } LinkList Create() { LinkList L,p,s; ElemType e; L = (LinkList)malloc(sizeof(LNode)); p=L; scanf("%d",&e); while(e!=-1) { s = (LinkList)malloc(sizeof(LNode)); s->data=e; p->next = s; p=s; scanf("%d",&e); } p->next=NULL; return L; } void print(LinkList L) { LinkList p; p=L->next; while (p) { printf("%d ", p->data); p =p->next; } } /* 请在这里填写答案 */
输入样例:
在这里给出一组输入。例如:
1 2 3 4 5 6 -1
输出样例:
在这里给出相应的输出。例如:
1 2 3 4 5 6 6 5 4 3 2 1
void reverse ( LinkList L ) { LNode *p, *q; p = L->next; L->next = NULL; while (p != NULL) { q = p; p = p->next; q->next = L->next; L->next = q; } return L; }
点击数:102