写在前面的话:直接从第5章跳到了第7章数据结构的趣题,原因是前面的数学趣题做久了,会觉得稍许疲倦,所以想“变个口味”,以后数学趣题和数据结构混合着练习。

1. 题目要求

编写一个函数,实现顺序表的就地逆置,也就是说利用原表的存储空间,将顺序表(a1,a2,a3,...,an)逆置为(an,an-1,...,a2,a1)

2. 题目分析

oh!太久没有看过数据结构的东西了,感觉非常的不习惯,脑子一片空白呢!

顺序表应该可以如下简单的描述

a->b->c->d->...

这里先简单复习一下顺序表吧

https://blog.csdn.net/liubo_01/article/details/80186552

网上有很多关于顺序表的东西了

3. 代码尝试

#include "stdio.h"

#define MAXSIZE 10

/*定义一个顺序表类型*/

typedef struct{

int *base;

int length;

}sqlist;

reverseSQ(sqlist *l){

int low = 0,high = l->length-1;//分别指向顺序表首尾

int buf,i;

for(i=0;i<l->length/2;i++){

buf = l->base[low];

l->base[low]=l->base[high];

l->base[high]=buf;

low++;

high--;

}

}

int main(){

sqlist l;

int a,i=0;

//创建一个顺序表

l.base = (int*)malloc(sizeof(int)*MAXSIZE);

l.length = 0;

//输入数据

printf("please input below 10 integer into the sqlist.\n");

printf("please type -1 for stopping input\n");

scanf("%d",&a);

while(a!=-1&&i<=9){

l.base[i]=a;

l.length++;

i++;

scanf("%d",&a);

}

//输出原来表的数据

printf("the contents of the sqlist are\n");

for(i=0;i<l.length;i++){

printf("%d",l.base[i]);

}

printf("\n");

//就地逆置顺序表

printf("%d",&l);

reverseSQ(&l);

printf("the contents of the reversed sqlist are\n");

for(i=0;i<l.length;i++){

printf("%d",l.base[i]);

}

return 0;

}

4. 总结

线性表顺序存储的概念:指的是在内存中用一段地址连续的存储单元依次存储线性表中的元素。

采用的实现方式:一段地址连续的存储单元可以用固定数组或者动态存储结构来实现,这里采用动态分配存储结构。

10 typedef struct

11 {

12     int * elem;               //采用动态存储分配结构

13     int length;

14     int listsize;

15 }sqlist;

【C语言编程练习】7.1 线型表就地逆置的更多相关文章

  1. 顺序表应用4-2:元素位置互换之逆置算法(数据改进)(SDUT 3663)

    Problem Description 一个长度为len(1<=len<=1000000)的顺序表,数据元素的类型为整型,将该表分成两半,前一半有m个元素,后一半有len-m个元素(1&l ...

  2. 个人c语言编程风格总结

    总结一下我个人的编程风格及这样做的原因吧,其实是为了给实验室写一个统一的C语言编程规范才写的.首先声明,我下面提到的编程规范,是自己给自己定的,不是c语言里面规定的. 一件事情,做成和做好中间可能隔了 ...

  3. 华为C语言编程规范

    DKBA华为技术有限公司内部技术规范DKBA 2826-2011.5C语言编程规范2011年5月9日发布 2011年5月9日实施华为技术有限公司Huawei Technologies Co., Ltd ...

  4. linux 操作系统下c语言编程入门

    2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门--时间概念 5)Linux程序设计入门--信号处理 6)Linux程序设计入门--消息管理  ...

  5. Linux下安装MySQL数据库以及用C语言编程存取数据库

    ubuntu下安装软件相当简单,一条简单的 apt-get install 就可以解决,相比源码安装方式唯一的缺点就是,你无法自定义软件的安装目录.不过这也不是什么太大的缺点.下面我们就用 apt-g ...

  6. P4语言编程快速开始 实践二

    参考:P4语言编程快速开始 上一篇系列博客:P4语言编程快速开始 实践二 Demo 2 本Demo所做的修改及实现的功能: 为simple_router添加一个计数器(counter),该计数器附加( ...

  7. R语言编程艺术(2)R中的数据结构

    本文对应<R语言编程艺术>第2章:向量:第3章:矩阵和数组:第4章:列表:第5章:数据框:第6章:因子和表 ======================================== ...

  8. C语言编程规范

    C语言编程规范 6 函数与过程 6.1 函数的功能与规模设计 函数应当短而精美,而且只做一件事.不要设计多用途面面俱到的函数,多功能集于一身的函数,很可能使函数的理解.测试.维护等变得困难. 6.2 ...

  9. C语言编程程序的内存怎样布局

    在c语言中,每一个变量和函数有两个属性:数据类型和数据的存储类别. C语言中局部变量和全局变量变量的存储类别(static,extern,auto,register) 1. 从变量的作用域划分变量(即 ...

随机推荐

  1. (Python3) 运行结果 = 10,40 的困扰我一顿饭时间的 代码

    a=10 b=30 def kzkzkz(a,b):   #定义一个函数 a=a+b return a b= kzkzkz(a,b) print(a,b)

  2. 【译】使用 Flutter 实现跨平台移动端开发

    作者: Mike Bluestein   | 原文地址:[https://www.smashingmagazine.com/2018/06/google-flutter-mobile-developm ...

  3. Linux二进制安装apache2.4.25

    Linux二进制安装apache2.4.25 安装环境:CentOS 6.2 先检查是否安装了Apache 如通是通过rpm包安装的话直接用下面的命令:rpm -q httpd 也可以使用如下两种方法 ...

  4. 秋名山老司机(BS4与正则的比拼)

    因为嘉伟思杯里的一个脚本题目,16进制计算,python3正则还没学,所以没写出来.大佬跟我说也可以用BS4,从DOM上下手,直接爬下来直接一个eval就搞定了,eval可以像这样计算16进制,eva ...

  5. elk的备份与恢复【转】

    elasticsearch提供了快照功能: 1.在elsticsearch的配置文件中定义一个path.repo路径配置 path.repo: ["/elk/my_backup"] ...

  6. Python爬虫基础之requests

    一.随时随地爬取一个网页下来 怎么爬取网页?对网站开发了解的都知道,浏览器访问Url向服务器发送请求,服务器响应浏览器请求并返回一堆HTML信息,其中包括html标签,css样式,js脚本等.我们之前 ...

  7. shutil&shelve

    https://www.cnblogs.com/xiangsikai/p/7787101.html http://www.cnblogs.com/wupeiqi/articles/4963027.ht ...

  8. SpringBoot参数注解

    1.@RequestParam有无区别 1.1 @GetMapping("/name/id")public Result managerNameIsRepeat(@RequestP ...

  9. lr 中cookie的解释与用法

    Loadrunner 中 cookie 解释与用法loadrunner 中与 cookie 处理相关的常用函数如下: web_add_cookie(): 添加新的 cookie 或者修改已经存在的 c ...

  10. 链表详解(C语言)

    链表是一种常见的基础数据结构,结构体指针在这里得到了充分的利用. 链表可以动态的进行存储分配,也就是说,链表是一个功能极为强大的数组,他可以在节点中定义多种数据类型,还可以根据需要随意增添,删除,插入 ...