c语言描述的顺序表实现
//顺序表的实现:(分配一段连续地址给顺序表,像数组一样去操作)
#include<stdio.h>
#include<stdlib.h>
#define OK 1
#define ERROR 0
#define LIST_INIT_SIZE 100
#define INCREMENT 10
typedef int ElemType;
typedef struct{
ElemType *elem;//数组指针代表存储基址
int length;//当前顺序表长度
int listsize;//当前已经分配的空间大小
}Sqlist;//顺序表的长度不一定会占满已经分配的空间
static Sqlist L;
static int e;
int Initlist(Sqlist *L){
int i,length;
printf("请输入顺序表的长度:\n");
scanf("%d",&length);
L->elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!L->elem){
return ERROR;
}
printf("输入%d个元素,以空格隔开:\n",length);
for(i=;i<length;i++){
scanf("%d",&L->elem[i]);
}
L->length=length;
L->listsize=LIST_INIT_SIZE;
return OK;
}
void TraverseList(Sqlist *L){
int i;
if(!L){
printf("空表!");
exit(ERROR);
}
for(i=;i<L->length;i++){
printf("%d\n",L->elem[i]);
}
}
int ListInsert(Sqlist *L,int e,int m){
ElemType *newbase;
ElemType *p,*q;
if(m<||m>L->length){
return ERROR;
}
if(L->length>=L->listsize){
printf("当前空间满了!重新分配内存\n");
newbase=(ElemType *)realloc(L->elem,(L->listsize+INCREMENT)*sizeof(ElemType));
if(!newbase){
return ERROR;
}
L->elem=newbase;
L->listsize+=INCREMENT;
}
q=&(L->elem[m-]);
for(p=&(L->elem[L->length-]);p>=q;p--){
*(p+)=*p;//从后往前依次后移
}
*q=e;
L->length++;
return OK;
}
int ListDelete(Sqlist *L,int m){
if(m<||m>L->length){
return ERROR;
}else{
ElemType *p,*q; p=&(L->elem[m-]);
free(p);
for(q=&(L->elem[L->length-]);q>L->elem[m-];q++){
*(q-)=*q;//从后往前依次前移
}
}
return OK; }
int main(){
int i,n,m;
if(Initlist(&L)==ERROR){
printf("创建失败!");
return ERROR;
}
TraverseList(&L);
printf("输入要插入元素的和要插入的位置 用空格隔开!\n");
scanf("%d%d",&n,&m);
TraverseList(&L);
printf("输入要删除的元素位置:\n");
scanf("%d",&n);
if(!ListDelete(&L,n)){
printf("删除失败!");
TraverseList(&L);
}
return OK;
}
c语言描述的顺序表实现的更多相关文章
- 数据结构C语言版--动态顺序表的基本功能实现(二)
/* * 若各个方法结构体变量参数为: &L(即地址符加变量)则结构体变量访问结构成员变量时使用"." * 若为:*L(即取地址符加变量)则结构体变量访问结构体成员变量使用 ...
- C语言实现的顺序表
顺序表是用一段地址连续的存储单元依次存储数据元素的线性结构.顺序表可分为静态存储和动态存储,静态顺序表比较简单,数据空间固定,而动态顺序表可以动态增容,便于存放大量数据,现主要把动态的基本实现一下~此 ...
- C语言学习笔记-顺序表
#include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include "coni ...
- C语言版本:顺序表的实现
seqlist.h #ifndef __SEQLIST_H__ #define __SEQLIST_H__ #include<cstdio> #include<malloc.h> ...
- C语言项目实现顺序表
#include <stdio.h> #include <stdlib.h> #include "test_顺序表声明.h" /* run this pro ...
- 数据结构C语言版--静态顺序表的基本功能实现(一)
/* * 功能:创建一个线性表,并输出 * 静态分配内存 */ #include<stdio.h> //stdio.h是C的标准I/O库 //#include<iostream> ...
- c语言描述的顺序栈实现
#include<stdio.h> #include<stdlib.h> #define initsize 100 #define ok 1 #define error 0 t ...
- 【数据结构】之顺序表(Java语言描述)
之前总结过使用C语言描述的顺序表数据结构.在C语言类库中没有为我们提供顺序表的数据结构,因此我们需要自己手写,详细的有关顺序表的数据结构描述和C语言代码请见[我的这篇文章]. 在Java语言的JDK中 ...
- 【数据结构】之顺序表(C语言描述)
顺序表是线性表的一种,它将元素存储在一段连续的内存空间中,表中的任意元素都可以通过下标快速的获取到,因此,顺序表适合查询操作频繁的场景,而不适合增删操作频繁的场景. 下面是使用 C语言 编写的顺序表的 ...
随机推荐
- hash扩展攻击本地实验
记录一下自己对hash扩展攻击的一些理解,hash扩展攻击主要应用于身份认证,比如对于成功登录的用户可以赋予其一个采用hsah算法加密的cookie值,其中含有未知的密钥. 此后每次在服务器端验证此c ...
- 【linux】dpkg 命令使用说明
dpkg是一个debian包管理工具.能够对包进行安装.卸载.获取信息等操作.用法: 安装(解包并配置): dpkg -i package_file dpkg --ins ...
- Aspose.Words .NET如何实现文档合并的同页分页显示
当我们需要将一个文档添加到另一个文档时,经常会有不同的显示需求.为了文档的流畅,我们需要源文档和目标文档在内容上实现连续显示:而为了更好地区分文档,我们经常会希望两个文档的合并实现分页显示. 下面,就 ...
- IO流之流的操作规律
流的操作规律 IO流中对象很多,解决问题(处理设备上的数据时)到底该用哪个对象呢? 把IO流进行了规律的总结(四个明确): l 明确一:要操作的数据是数据源还是数据目的. 源:InputStream ...
- JVM crash at ForUtil.readBlock
今天同学让帮忙看下JVM错误日志,才发现已经开始接触java3个月,还没看到相关错误日志.平时看的都只是程序运行时写入的日志,关于JVM的错误日志还真没看过.网上收集资料,整理如下. 一.日志文件: ...
- matlab练习程序(Arnold图像置乱)
自从上次写了Hilbert图像置乱之后,就对图像置乱研究了一下,发现这里面也是有很多置乱算法的. Arnold也算一种比较主要的置乱算法,算法由以下变换公式产生: 这里a和b是参数,n是迭代次数,N是 ...
- 虚拟机配置静态 IP 以后无法连接的解决办法
问题描述 将虚拟机内部 IP 地址从动态获取改成静态 IP 以后,远程连接失败. 问题分析 Azure 虚拟机的内部 IP 默认为动态分配, 由 DHCP 服务自动分配, 在虚拟机的生命周期内, 该 ...
- Oracle DG 三种模式(转)
DG有下面三种模式– Maximum protection– Maximum availability– Maximum performance 在Maximum protection下, 可以保证从 ...
- linux中启动网卡报错:Bringing up interface eth1: Error: Connection activation failed
在重启linux网络服务的时候提示: Active connection path: /org/freedesktop/NetworkManager/ActiveConnection/2 并且产生报错 ...
- 再学UML-Bug管理系统UML2.0建模实例(三)
3.系统设计 在对系统进行全面分析后,我们开始使用UML对系统进行设计,构造BMS系统的设计模型,包括类图.包图.顺序图(实现模型).组件图和部署图等的绘制,回答了“怎么做”的问题.具体设计工作如下: ...