`

顺序表的就地逆置

阅读更多

 

源代码:

 

#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>

#define TURE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2

typedef int Status;   
typedef int ElemType;
#define LIST_INIT_SIZE 100   //初始容量 
#define LISTINCREMENT 10    //空间增量 

typedef struct{
   ElemType *elem;   //存储空间基址
   int length;    //表长,元素个数
   int listsize;   //表容量,空间大小
}SqList; 

Status InitList_Sq(SqList &L)  {
	//构造一个空的线性表L

	L.elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType)) ; 
	if(!L.elem) exit(OVERFLOW); 
	L.length=0;            
	L.listsize=LIST_INIT_SIZE;  
	return OK; 
} 

void Input_Sq(SqList &L) {
	//输入数据
	int n,i,x;
	printf("\nPlease input the SqList's length:");
	scanf("%d",&n);
	L.length=n;
	for(i=0;i<n;i++)
	{
		printf("Please input %dth elem:",i+1);
		scanf("%d",&x);
		L.elem[i]=x;
	}
}


void Print_Sq(SqList L){
	int i,n=L.length;
	printf("The list elemt is:\n");
	for(i=0;i<n;i++)
		printf("%d",L.elem[i]);
}

void Reverse_Sq(SqList &L){
	//利用原表空间就地逆置顺序表L
	int i,n;
	ElemType temp;
	n=L.length;
	for(i=0;i<n/2;i++){
		temp=L.elem[n-1-i];
		L.elem[n-1-i]=L.elem[i];
		L.elem[i]=temp;
	}
}

void main(){
	SqList L;
	ElemType e;
	InitList_Sq(L);
	Input_Sq(L);
	printf("\nBefore Reverse,");
	Print_Sq(L);
	printf("\n");
	Reverse_Sq( L);
	printf("\nAfter Reverse,");
	Print_Sq(L);
	printf("\n");
}

 

 

 

运行结果: 

 



 

 

  • 大小: 5.5 KB
0
0
分享到:
评论

相关推荐

    顺序表就地逆置

    ### 顺序表就地逆置知识点详解 #### 一、基础知识概述 在计算机科学与技术领域,数据结构作为一门基础且重要的学科,其研究对象主要包括数据的逻辑结构、存储结构以及对这些数据进行操作的算法。其中,顺序表是...

    顺序表的就地逆置的算法

    ### 题目解读:顺序表的就地逆置算法 首先,题目中的“顺序表”在这里实际上指的是链表,因为顺序表通常指的是数组,而数组的逆置操作较为简单,直接交换元素即可。链表的逆置则需要更复杂的操作,尤其是当我们要...

    数据结构(Java语言描述) 案例01 顺序表的就地逆置.docx

    《数据结构(Java 描述)》课程中的案例01探讨了如何就地逆置一个顺序表,即在不额外消耗显著空间的情况下,反转一个存储整数的数组。在这个案例中,我们关注的重点是算法的设计、分析和实现。 1. 算法设计 顺序表...

    数据结构-顺序表的就地逆置.doc

    在给定的文档中,我们讨论的是数据结构中的顺序表,并特别关注了如何就地逆置顺序表。顺序表是一种线性数据结构,其中元素在内存中是连续存储的,可以方便地通过索引来访问。这里,我们用C语言实现了一个顺序表的...

    顺序表逆置c语言数据结构.cpp

    问题:试写一算法,实现顺序表的就地逆置,即利用原表的存储空间将线性表(a1,a2,...,an)逆置为(an,an-1,...,a1) 算法思想:观察原表和新表顺序,逆置后的线性表是将原表相应位置的元素进行交换,即交换第一个和...

    顺序表逆置算法

    顺序表就地逆置算法用c语言描述的,数据结构课后习题之一

    c++顺序表操作的实现包括就地逆置算法

    本文将深入探讨C++实现顺序表的基本操作,特别是就地逆置算法。 顺序表通常由一个动态分配的数组来表示,允许我们在数组的连续位置上存储和访问元素。基本操作包括插入、删除、查找以及对表的其他操作,如遍历和...

    数据结构顺序表的就地逆置

    设计一个算法,对顺序表实现就地逆置,即利用原表的存储空间将线性表(a1,2,•••,an)逆置为(an,an-1,•••,a1)。

    顺序表的就地逆置完整程序

    顺序表的就地逆置 可以再电脑上实现的,包括完整的程序设计代码

    顺序表逆置

    这个可以应用于顺序表逆置,查找,或者删除,顺序表作为存储结构,实现将线性表(a0,a1,a2,…an-1)就地逆置的操作,所谓“就地”,是指辅助空间应为O(1)。

    单链表就地逆置的方法

    单链表的就地逆置是指在不申请额外空间的情况下,改变链表中节点的指针方向,使得链表的顺序反转。具体来说,就是使原来指向后继节点的指针改为指向前驱节点,从而达到整个链表逆序的效果。 #### 逆置算法步骤 ...

    nixu.rar_链表就地逆置

    在"nixu.rar_链表就地逆置"的场景中,我们面临的是一个数据结构的实践问题,即给定一个链表,需要设计一个算法来实现链表的就地逆置。这个任务的挑战在于如何在有限的空间复杂度下完成操作,因为“就地”意味着我们...

    线性表的就地逆置

    线性表的就地逆置 线性表是数据结构中最基本的结构之一,线性表的就地逆置是指在不使用额外空间的情况下,将线性表中的元素逆置。这种操作在实际应用中非常有用,例如在字符串处理、链表操作等方面。 线性表 ...

    数据结构实现就地逆置

    而“就地逆置”是一种特殊的数据操作,尤其在链表处理中常见,它要求不额外分配内存空间,而是直接在原数据结构内完成元素顺序的反转。在此,我们将深入探讨这一主题,并结合具体实现来理解其原理。 首先,我们要...

    056 单链表就地逆置 C语言

    本话题将探讨如何就地逆置一个单链表,即不使用额外的数据结构或数组,仅通过链表自身的节点进行操作。 首先,我们要理解链表的逆置意味着原来的顺序是 head -&gt; node1 -&gt; node2 -&gt; ... -&gt; nodeN,逆置后变成 head -...

    实现单链表就地逆置且不分配新的空间

    在"就地逆置"的情况下,我们要求在不额外分配内存空间的情况下完成链表的逆置,即只使用原链表的节点空间进行操作。 单链表就地逆置的算法通常涉及三个指针:前驱指针(prev)、当前指针(curr)和临时指针(temp)...

    单链表 创建 头插法 尾插法 就地逆置

    在上面的代码中,就地逆置的实现函数是`nizhi(Link &l)`和`nizhi2(LinkList &L)`,它们都是将单链表的节点顺序逆置的函数。 单链表的输出 单链表的输出是指将单链表中的数据输出到控制台的方法。其基本思想是遍历...

    单向链表的逆置 C++源代码

    链表的逆置是将链表中的顺序反转,即将原链表的首节点变为尾节点,原尾节点变为首节点,其余节点依次调整指针方向。这个操作在算法面试中频繁出现,因为它能测试程序员对基础数据结构和递归或迭代解冑方案的理解。 ...

Global site tag (gtag.js) - Google Analytics