设计一个算法将一个顺序表逆置

#include<iostream>
#include<malloc.h>
using namespace std;
typedef struct {
 int length;//保存长度
 int data[40];//数组
} SqList;
/*算法1:设计一个高效的算法,将顺序表中的所有元素逆置、要求算法空间股咋度为o(1)*/
//初始化顺序表
void initReverse(SqList &s,int *a,int l){

        s.length=0;
        //插入元素
        for(int i=0;i<l;i++){
                s.data[i]=a[i];
        }
        s.length=l;

        //先输出所有元素
        for(int i=0;i<s.length;i++){
                cout<<s.data[i]<<" ";
        }
        cout<<endl;
        //逆置
        int m=s.length/2;
        int start=0,end=s.length-1,temp;

        while(start<end){
                temp=s.data[start];
                s.data[start]=s.data[end];
                s.data[end]=temp;
                start++;
                end--;
        }
        //输出并且销毁 系统自动销毁 无需操作
        for(int i=0;i<s.length;i++){
                cout<<s.data[i]<<" ";
        }
        cout<<endl;

}
using namespace std;
int main(){
        SqList s;
        int a[6]={1,2,3,4,5,6};
        initReverse(s,a,6);

        return 0;
}

原文地址:https://www.cnblogs.com/webcyh/p/11359562.html

时间: 2024-08-05 07:32:34

设计一个算法将一个顺序表逆置的相关文章

线性表&gt;&gt;顺序表---&gt;逆置所有元素

1 /*顺序表中所有的元素逆置 2 * 3 */ 4 #include <iostream.h> 5 using namespace std; 6 7 int main(){ 8 void reverse_arr(int arr[],int n); 9 int a[]={0,1,2,3,4,5,6,7}; 10 int n=7; 11 reverse_arr(a,n); 12 for(int i=0;i<=n;i++){ 13 cout << a[i] << &q

一个简单的顺序表基础操作示例

最近学计算机软件基础,学到了线性表.下面就将线性表中最简单的顺序表的一个简单示例贴出,方便大家探讨.(以及后面对函数传参的一个小分析,其实这才是重点) 1 ////需求分析 2 //1.线性表递增有序,删除重复元素 3 //2.线性表逆置 4 //3.寻求最大值 5 6 #include<stdio.h> 7 8 typedef int ElementType; 9 typedef struct _struct 10 { 11 ElementType SequenceList[100]; 12

java数据结构与算法之顺序表与链表深入分析

转载请注明出处(万分感谢!): http://blog.csdn.net/javazejian/article/details/52953190 出自[zejian的博客] 关联文章: java数据结构与算法之顺序表与链表设计与实现分析 java数据结构与算法之双链表设计与实现 ??数据结构与算法这门学科虽然在大学期间就已学习过了,但是到现在确实也忘了不少,因此最近又重新看了本书-<数据结构与算法分析>加上之前看的<java数据结构>也算是对数据结构的进一步深入学习了,于是也就打算

A、B两个整数集合,设计一个算法求他们的交集

代码留作记录,本人水平有限,看了别人的解法真是自愧不如. 关于此题的详细探讨可以参考:http://blog.csdn.net/thebestdavid/article/details/12056293 /*A.B两个整数集合,设计一个算法求他们的交集,尽可能的高效.*/ #include <iostream> #include <cstring> #include <set> #define M 8 #define N 5 using namespace std; i

剑指offer系列——二维数组中,每行从左到右递增,每列从上到下递增,设计一个算法,找其中的一个数

题目:二维数组中,每行从左到右递增,每列从上到下递增,设计一个算法,找其中的一个数 分析: 二维数组这里把它看作一个矩形结构,如图所示: 1 2 8 9 2 4 9 12 4 7 10 13 6 8 11 15 在做这道题的时候我最先考虑的是每次比较对角线上的元素可能可以取得较好的效果, 以查找9为例, 从1(0,0)开始,1<10,可以得出结论,10在1的右侧或下侧: 1 2 8 9 2 4 9 12 4 7 10 13 6 8 11 15 然后看4(1,1),4<9, 1 2 8 9 2

表逆置[数组和链表]

对于数组(也可为线性表),逆置就是首尾数据两两交换,首先计算交换的次数: 中间需要一个临时变量暂存数据,看似简单,其实有点绕,关键还是数组下标从0开始,这一点很麻烦!这种小题最练基础! 完整代码: #include <iostream> using namespace std; int main() { int a[]={1,2,3,4,5,7,8,9}; int len=sizeof(a)/sizeof(int);/*计算数组长度*/ int temp;/*临时变量*/ for(int i=

数据结构之自建算法库——顺序表

学习<数据结构>课程的过程中,同步开展实践.对每一种逻辑结构,实现其各种存储结构下的基本运算,是一项基础性的工作.学习方法建议请参考"0207将算法变程序"[视频]部分建议的方法 本文为算法库中的第一个,针对线性表中的顺序存储结构,实现各种基本运算. 算法库包括两个文件: ? 头文件:list.h,包含定义顺序表数据结构的代码.宏定义.要实现算法的函数的声明: ? 源文件:list.cpp,包含实现各种算法的函数的定义 list.h #ifndef LIST_H_INCLU

线性表逆置

建立长度为n的顺序表,然后将表中的数据元素逆置,即若表中原来的数据元素序列为(a0,a1,a2,-,an),则逆置后的数据元素序列为(an,an-1,an-2,-,a1,a0).(数据类型为字符型) Description 第一行为顺序表的长度n: 第二行为顺序表中的数据元素: Input 输出为逆置后的顺序表 Output 1 2 3 7 A B C D E F G Sample Input 1 G F E D C B A Sample Output #include<stdio.h> in

闭关修炼中 *** Java常用算法之 -- 顺序表结构

给我的好姐姐聊聊天代码也打完了,小弟可是一心二用了,不过代码确实是挺长的. 代码打的时间长短不重要,重要的是理解~理解~理解.重要的事说三遍!!! 每天的重复,恨不得一天过成两天马上结束了,能多学点是点了. 山再高,咱能有耐心.同样如此~哈哈. 贴上代码吧: 1 import java.util.Scanner; 2 3 /***************************************** 4 * * 5 * 顺序结构 * 6 * * 7 ********************