栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

6-4 单链表逆置 (10 分)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

6-4 单链表逆置 (10 分)

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
#include
typedef 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;
     }
}



输入样例:

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

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/739332.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号