//顺序表的实现:(分配一段连续地址给顺序表,像数组一样去操作)
#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语言描述的顺序表实现的更多相关文章

  1. 数据结构C语言版--动态顺序表的基本功能实现(二)

    /* * 若各个方法结构体变量参数为: &L(即地址符加变量)则结构体变量访问结构成员变量时使用"." * 若为:*L(即取地址符加变量)则结构体变量访问结构体成员变量使用 ...

  2. C语言实现的顺序表

    顺序表是用一段地址连续的存储单元依次存储数据元素的线性结构.顺序表可分为静态存储和动态存储,静态顺序表比较简单,数据空间固定,而动态顺序表可以动态增容,便于存放大量数据,现主要把动态的基本实现一下~此 ...

  3. C语言学习笔记-顺序表

    #include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include "coni ...

  4. C语言版本:顺序表的实现

    seqlist.h #ifndef __SEQLIST_H__ #define __SEQLIST_H__ #include<cstdio> #include<malloc.h> ...

  5. C语言项目实现顺序表

    #include <stdio.h> #include <stdlib.h> #include "test_顺序表声明.h" /* run this pro ...

  6. 数据结构C语言版--静态顺序表的基本功能实现(一)

    /* * 功能:创建一个线性表,并输出 * 静态分配内存 */ #include<stdio.h> //stdio.h是C的标准I/O库 //#include<iostream> ...

  7. c语言描述的顺序栈实现

    #include<stdio.h> #include<stdlib.h> #define initsize 100 #define ok 1 #define error 0 t ...

  8. 【数据结构】之顺序表(Java语言描述)

    之前总结过使用C语言描述的顺序表数据结构.在C语言类库中没有为我们提供顺序表的数据结构,因此我们需要自己手写,详细的有关顺序表的数据结构描述和C语言代码请见[我的这篇文章]. 在Java语言的JDK中 ...

  9. 【数据结构】之顺序表(C语言描述)

    顺序表是线性表的一种,它将元素存储在一段连续的内存空间中,表中的任意元素都可以通过下标快速的获取到,因此,顺序表适合查询操作频繁的场景,而不适合增删操作频繁的场景. 下面是使用 C语言 编写的顺序表的 ...

随机推荐

  1. 图像文字识别(OCR)用什么算法小结

    说明:主要考虑深度学习的方法,传统的方法不在考虑范围之内. 1.文字识别步骤 1.1detection:找到有文字的区域(proposal). 1.2classification:识别区域中的文字. ...

  2. 《Python编程从入门到实践》_第十章_文件和异常

    读取整个文件 文件pi_digits.txt #文件pi_digits.txt 3.1415926535 8979323846 2643383279 下面的程序打开并读取整个文件,再将其内容显示到屏幕 ...

  3. hashlib库的使用

    这个模块实现了许多不同的安全哈希和消息摘要算法的通用接口.包括FIPS安全哈希算法SHA1.SHA224.SHA256.SHA384和SHA512(在FIPS 180-2中定义)以及RSA的MD5算法 ...

  4. 序列化json和protobuf大小比较

    使用protobuf序列化为二进制和json序列化字符串大小比较 代码demo package com.gxf.demo; import java.io.*; public class Ptotobu ...

  5. C++里创建 Trie字典树(中文词典)(三)(联想)

    萌新做词典第三篇,做得不好,还请指正,谢谢大佬! 今天把词典的联想做好了,也是比较low的,还改了之前的查询.遍历等代码.  Orz 一样地先放上运行结果: test1 ID : char : 件 w ...

  6. 关于消息推送的补充,主要介绍服务端的实现,包含object c 版本 c 版本 java 版本 php 版本 (转)

    要实现消息推送功能,我们可以采用第三方(腾讯:信鸽:百度:云推送:极光推送:友盟):当然,因为各种原因,我们不能使用第三方的推送服务,那我们就需要自己编写服务端.在网上寻觅了很久,找到一篇很不错的讲解 ...

  7. 从零开始的全栈工程师——html篇1.4

    背景与边框 一.背景(backgound) 1.背景颜色:background-color:red;(简写:background:color;) 备注:ie9以下给body设置background-c ...

  8. cf1064D. Labyrinth(01BFS)

    题意 题目链接 给出一个\(n \times m\)的网格,给出起始点,要求向左走不超过\(L\)步,向右走不超过\(R\)步,求出能遍历到哪些点 Sol 一个很直观的想法,BFS的时候状态里记录下还 ...

  9. Android之侧滑导航栏

    今天学习的新内容是侧滑导航栏,我想大家肯定都比较熟悉了,因为这个效果在qq里面也有,最近一直跟室友们玩的游戏是快速让自己的头像的点赞量上千.当然我的效果跟qq是没有办法比的,因为那里面的功能是在是太强 ...

  10. 有关table布局时tr 属性display:block显示布局错乱

    display:block display:block是可以把非块级元素强制转换为块级元素显示,如内嵌元素span,原来不支持设置宽高,宽度是由内容撑开的; display:table-row tab ...