写在前面的话:直接从第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. 罗技M185鼠标飘

    不用鼠标垫会好很多,艹.今天买了个树脂鼠标垫解决问题.

  2. [译]Ocelot - Caching

    原文 Ocelot支持基本的缓存,目前Ocelot的缓存是通过CacheManager project实现的. 下面的示例展示了如何启用缓存: s.AddOcelot() .AddCacheManag ...

  3. 利用SSL-Change Cipher Spec传递信息

    Change Cipher Spec 中文翻译为 更改密码规格. 恢复原有会话的SSL握手过程流程如下: 关于如何用Change Cipher Spec传输数据,可以扩展tcp.payload. tc ...

  4. Python学习第二节——基础知识

    # !/usr/bin/edv python    脚本语言的第一行,目的就是指出,你想要你的这个文件中的代码用什么可执行程序去运行它.# -*- coding:UTF-8 -*-    标明编码注释 ...

  5. matlab 加根号

    text(3,0.5,'z=0.2$$\sqrt{c/h_0}$$+0.3','interpreter','latex')

  6. javascript 事件冒泡和事件代理

    事件冒泡 简单的讲,当子元素的事件处理函数被触发(如onclick),该事件会从事件源(当前子元素)逐级向上层元素传递,触发祖先元素的 onclik 事件,一直到最外层 html 根元素. 这可能会带 ...

  7. LOJ #6539 奇妙数论题

    不想咕太久..就随便找个题更一下 LOJ#6539 题意 求题面里那个式子 题解 有一个常用的小式子 $$\sum_{x|a,x|b}\varphi(x)=\gcd(a,b)$$ 用这个式子直接对题面 ...

  8. Win2012 R2安装 mysql8.0

    1.官网下载安装 官网上面写着x86,其实是兼容x64和x86的,下载安装就行 2.安装navicat 3.navicat连接mysql的时候出现错误 client does not support ...

  9. vue.js学习系列-第一篇(代码)

    <html> <head> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"> ...

  10. django数据库迁移报错

    当输入C:\Users\太阳之泪\b2p\my_pro>python manage.py makemigrations shop 出现一下情况 然后输入C:\Users\太阳之泪\b2p\my_ ...