【C语言编程练习】7.1 线型表就地逆置
写在前面的话:直接从第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 线型表就地逆置的更多相关文章
- 顺序表应用4-2:元素位置互换之逆置算法(数据改进)(SDUT 3663)
Problem Description 一个长度为len(1<=len<=1000000)的顺序表,数据元素的类型为整型,将该表分成两半,前一半有m个元素,后一半有len-m个元素(1&l ...
- 个人c语言编程风格总结
总结一下我个人的编程风格及这样做的原因吧,其实是为了给实验室写一个统一的C语言编程规范才写的.首先声明,我下面提到的编程规范,是自己给自己定的,不是c语言里面规定的. 一件事情,做成和做好中间可能隔了 ...
- 华为C语言编程规范
DKBA华为技术有限公司内部技术规范DKBA 2826-2011.5C语言编程规范2011年5月9日发布 2011年5月9日实施华为技术有限公司Huawei Technologies Co., Ltd ...
- linux 操作系统下c语言编程入门
2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门--时间概念 5)Linux程序设计入门--信号处理 6)Linux程序设计入门--消息管理 ...
- Linux下安装MySQL数据库以及用C语言编程存取数据库
ubuntu下安装软件相当简单,一条简单的 apt-get install 就可以解决,相比源码安装方式唯一的缺点就是,你无法自定义软件的安装目录.不过这也不是什么太大的缺点.下面我们就用 apt-g ...
- P4语言编程快速开始 实践二
参考:P4语言编程快速开始 上一篇系列博客:P4语言编程快速开始 实践二 Demo 2 本Demo所做的修改及实现的功能: 为simple_router添加一个计数器(counter),该计数器附加( ...
- R语言编程艺术(2)R中的数据结构
本文对应<R语言编程艺术>第2章:向量:第3章:矩阵和数组:第4章:列表:第5章:数据框:第6章:因子和表 ======================================== ...
- C语言编程规范
C语言编程规范 6 函数与过程 6.1 函数的功能与规模设计 函数应当短而精美,而且只做一件事.不要设计多用途面面俱到的函数,多功能集于一身的函数,很可能使函数的理解.测试.维护等变得困难. 6.2 ...
- C语言编程程序的内存怎样布局
在c语言中,每一个变量和函数有两个属性:数据类型和数据的存储类别. C语言中局部变量和全局变量变量的存储类别(static,extern,auto,register) 1. 从变量的作用域划分变量(即 ...
随机推荐
- Thunk
Thunk https://en.wikipedia.org/wiki/Thunk In computer programming, a thunk is a subroutine used to i ...
- JavaScript中的alert()与console.log()的区别
1.alert() [1.1]有阻塞作用,不点击确定,后续代码无法继续执行 [1.2]alert()只能输出string,如果alert输出的是对象会自动调用toString()方法 e.g. ale ...
- UE4代码片断备份
在Actor内创建一个StaticMesh #include "Components/StaticMeshComponent.h" #include "Engine/St ...
- CentOS下TensorFlow安装命令
安装扩展源:sudo yum -y install epel-release 安装python-pip模块:sudo yum install python-pip 直接把whl文件download下来 ...
- JavaScript—对象创建方式
JavaScript 也是面向对象的语言(oop) 之前学JavaScript 没有学对象.现在做下笔记 创建对象的方式: 1. 对象字面量 const hero = { name: '吕布', w ...
- java学习笔记11-static关键字
如果在类中使用static关键字创建方法,这种方法称为类方法,可以在这个类中直接引用.而不是用static创建的方法.这种方法称为对象方法(实例方法),需要创建对象后才能使用. package les ...
- go实现选择排序
package main import "fmt" func SelectSort(data []int) { length := len(data) for i := 0; i ...
- LibreOJ一本通题解报告
网页跳转 解析啥的以后会有的 目录 ·T1活动安排 ·T2种树 ·T3喷水装置 T1活动安排 /* problem:yibentong10000 date:2019/4/21 author:Lonel ...
- typescript解决深度拷贝中循环引用引起的死循环
循环引用有人说就是一种不健康的状态,即你中有我,我中有你 hasObj: any = []; deepCopy(data: any) { this.hasObj.push(data); //最终就是返 ...
- css3兼容360
在头部添加 <!--启用360浏览器的极速模式(webkit) --> <meta name="renderer" content="webkit&qu ...