设有一线性表e={e1,e2,…,en-1,en),其逆线性表定义为e’={en,en-1,…,e2,e1}。请设计一个算法,将线性表逆置,要求逆线性表仍占用原线性表的空间,并且用单链表来表示,写出逆置函数。
函数接口定义:
void Reverse( linkList head );
q 是用户传入的参数,为单链表的头指针。其中类型定义如下:
typedef int DataType;typedef struct node{ DataType data; struct node *next;}LNode,*linkList;
裁判测试程序样例:
#include
输入样例:
在这里给出一组输入。例如:
51 2 3 4 5
输出样例:
在这里给出相应的输出。例如:
5 4 3 2 1
void Reverse( linkList head ){linkList q,p;q=head->next;head->next=NULL;while(q){p=q;q=q->next;p->next=head->next;head->next=p;}}
思路:
先将head指针的Next指为空值,用q指针将原本的单链表接管,在以q来循环单链表,在循环中将p=q;在进行尾插法