欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

6-4单链表逆置

时间:2023-05-28
6-4 单链表逆置 (10 分)

设有一线性表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#includetypedef int DataType;typedef struct node{ DataType data; struct node *next;}LNode,*linkList;linkList CreatList(); void PrintList(linkList head );void Reverse( linkList head );main(){ linkList q; q=CreatList(); Reverse(q); PrintList(q);}linkList CreatList(){ linkList h = (linkList)malloc(sizeof(LNode)); LNode *p,*tail= h; int n; scanf("%d",&n); for(int i=0;idata)); tail->next = p; tail = p; } tail->next=NULL; return h;}void PrintList(linkList head ){ LNode *p = head->next; while (p) { printf("%d ", p->data); p = p->next; }}

输入样例:

在这里给出一组输入。例如:

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;在进行尾插法

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。