源代码:
#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
分享到:
相关推荐
### 顺序表就地逆置知识点详解 #### 一、基础知识概述 在计算机科学与技术领域,数据结构作为一门基础且重要的学科,其研究对象主要包括数据的逻辑结构、存储结构以及对这些数据进行操作的算法。其中,顺序表是...
### 题目解读:顺序表的就地逆置算法 首先,题目中的“顺序表”在这里实际上指的是链表,因为顺序表通常指的是数组,而数组的逆置操作较为简单,直接交换元素即可。链表的逆置则需要更复杂的操作,尤其是当我们要...
《数据结构(Java 描述)》课程中的案例01探讨了如何就地逆置一个顺序表,即在不额外消耗显著空间的情况下,反转一个存储整数的数组。在这个案例中,我们关注的重点是算法的设计、分析和实现。 1. 算法设计 顺序表...
在给定的文档中,我们讨论的是数据结构中的顺序表,并特别关注了如何就地逆置顺序表。顺序表是一种线性数据结构,其中元素在内存中是连续存储的,可以方便地通过索引来访问。这里,我们用C语言实现了一个顺序表的...
问题:试写一算法,实现顺序表的就地逆置,即利用原表的存储空间将线性表(a1,a2,...,an)逆置为(an,an-1,...,a1) 算法思想:观察原表和新表顺序,逆置后的线性表是将原表相应位置的元素进行交换,即交换第一个和...
顺序表就地逆置算法用c语言描述的,数据结构课后习题之一
本文将深入探讨C++实现顺序表的基本操作,特别是就地逆置算法。 顺序表通常由一个动态分配的数组来表示,允许我们在数组的连续位置上存储和访问元素。基本操作包括插入、删除、查找以及对表的其他操作,如遍历和...
设计一个算法,对顺序表实现就地逆置,即利用原表的存储空间将线性表(a1,2,•••,an)逆置为(an,an-1,•••,a1)。
顺序表的就地逆置 可以再电脑上实现的,包括完整的程序设计代码
这个可以应用于顺序表逆置,查找,或者删除,顺序表作为存储结构,实现将线性表(a0,a1,a2,…an-1)就地逆置的操作,所谓“就地”,是指辅助空间应为O(1)。
单链表的就地逆置是指在不申请额外空间的情况下,改变链表中节点的指针方向,使得链表的顺序反转。具体来说,就是使原来指向后继节点的指针改为指向前驱节点,从而达到整个链表逆序的效果。 #### 逆置算法步骤 ...
在"nixu.rar_链表就地逆置"的场景中,我们面临的是一个数据结构的实践问题,即给定一个链表,需要设计一个算法来实现链表的就地逆置。这个任务的挑战在于如何在有限的空间复杂度下完成操作,因为“就地”意味着我们...
线性表的就地逆置 线性表是数据结构中最基本的结构之一,线性表的就地逆置是指在不使用额外空间的情况下,将线性表中的元素逆置。这种操作在实际应用中非常有用,例如在字符串处理、链表操作等方面。 线性表 ...
而“就地逆置”是一种特殊的数据操作,尤其在链表处理中常见,它要求不额外分配内存空间,而是直接在原数据结构内完成元素顺序的反转。在此,我们将深入探讨这一主题,并结合具体实现来理解其原理。 首先,我们要...
本话题将探讨如何就地逆置一个单链表,即不使用额外的数据结构或数组,仅通过链表自身的节点进行操作。 首先,我们要理解链表的逆置意味着原来的顺序是 head -> node1 -> node2 -> ... -> nodeN,逆置后变成 head -...
在"就地逆置"的情况下,我们要求在不额外分配内存空间的情况下完成链表的逆置,即只使用原链表的节点空间进行操作。 单链表就地逆置的算法通常涉及三个指针:前驱指针(prev)、当前指针(curr)和临时指针(temp)...
在上面的代码中,就地逆置的实现函数是`nizhi(Link &l)`和`nizhi2(LinkList &L)`,它们都是将单链表的节点顺序逆置的函数。 单链表的输出 单链表的输出是指将单链表中的数据输出到控制台的方法。其基本思想是遍历...
链表的逆置是将链表中的顺序反转,即将原链表的首节点变为尾节点,原尾节点变为首节点,其余节点依次调整指针方向。这个操作在算法面试中频繁出现,因为它能测试程序员对基础数据结构和递归或迭代解冑方案的理解。 ...