线性表--顺序实现方式
来源:互联网 发布:相亲吃饭谁买单 知乎 编辑:程序博客网 时间:2024/06/05 00:50
线性表是最基本、最简单的、也是很常用的一种数据结构。线性表中数据元素的关系式一对一的
关系,即是除了第一个和最后一个数据元素之外,其他数据元素都是首尾相接的。在实际中使用也是
较为广泛的,接下来用顺序实现方式简单的对其进行一下模拟。
源代码如下:
/** @author Kiritor 顺序线性表的演示*/#include "stdafx.h"#include<stdlib.h>#include<conio.h>#define LIST_INIT_SIZE 100#define LIST_INCREMENT 10#include<malloc.h>#define OK 1#define OVERFLOW 0typedef struct { int * element;//存储空间的基址 int length;//当前线性表的长度 int size ;//线性表的容量}SqList;/*初始化线性表*/int init_SqList(SqList & l){ l.element = (int *)malloc(LIST_INIT_SIZE*sizeof(int));//分配地址空间,线性表的总共的容量情况 if(!l.element) { exit(OVERFLOW);//分配失败则退出程序 } l.length=0; l.size=LIST_INCREMENT;//线性表的初始容量 printf("%s\n","初始化线性表成功!"); return OK;}/*输出线性表的内容*/void print_SqList(SqList &l){ int i=0;printf("%s\n","线性表内容:");for(i=0;i<l.length;i++){ printf("%d \n",*(l.element+i));}}/*插入数据到线性表 i表示在第i个位置前面进行插入 i从1开始*/int insert_SqList(SqList &l,int i,int element){if(i<1||i>l.length+1)return OVERFLOW;if(l.length>=l.size){//存储空间已满,重新进行分配int * newbase = (int *)realloc(l.element,(l.size+LIST_INCREMENT)*sizeof(int));l.element = newbase;l.size += LIST_INCREMENT;}//开始进行插入的操作int *q = &(l.element[i-1]);//q为需要插入的位置int *p;for(p=&(l.element[l.length-1]);p>=q;p--){*(p+1)=*p;}*q = element;l.length++;printf("%s%d\n","线性表插入",element);return OK; }/*删除线性表的某个位置的元素i表示要删除的元素的位置从1开始element用来存放删除的元素*/int delete_SqList(SqList &l,int i,int & element){if(i<1||i>l.length){return OVERFLOW;}int *p= &(l.element[i-1]);element=*p;//将要删除的元素放入emlement中printf("删除的元素是:%d\n",element);int *q=l.element+l.length-1;for(++p;p<=q;p++){*(p-1)=*p;//后面的元素往前面移动}l.length--;return OK;}int main(int argc, _TCHAR* argv[]){ SqList l; int emlement=0;init_SqList(l);insert_SqList(l,1,123);insert_SqList(l,1,321);insert_SqList(l,2,231);print_SqList(l);delete_SqList(l,2,emlement);print_SqList(l);_getch();return 0;}看一下结果图:
以上就是线性表的顺序实现方式了,通过上述的代码实现可以看出的是线性表顺序存储结构的特点
是逻辑上相连的两个元素在实际的物理地址上也是相邻的。因此对于其每个元素的存储位置的表示具有
规律性、公式性。也就造成了其元素的读取十分方便,但是若要进行元素的删除,插入则需要移动大量
的元素,这也是顺序实现的线性表的缺点吧。
后续会对其链式实现方式及其特点做些总结。Over!
- 线性表--顺序实现方式
- 线性表--顺序实现方式 (JAVA)
- 模拟实现线性表-顺序存储方式
- 线性表顺序实现
- 线性表顺序实现
- 线性表顺序实现
- 线性表顺序实现
- 线性表-顺序实现
- 线性表--顺序实现
- 线性表的顺序方式实现(c语言)
- 线性表:顺序表实现
- 线性表的顺序实现
- 数据结构实现顺序线性表
- 线性表---顺序存储实现
- 线性表的顺序实现
- 线性表的顺序实现
- 线性表的顺序实现
- 数据结构--线性表顺序实现
- Linux基础(三):多重引导
- common fileupload实例
- Android 编辑框(EditText)属性
- 复合表达式“*a++=*b++”的求解顺序和操作符优先级的关系
- Centos安装KDE
- 线性表--顺序实现方式
- 不定参数的应用
- centos6.3 解压缩
- 专题4-4.C语言中的字符串(国嵌C语言视频)
- android-ui-utils
- 博客分配
- printf函数实现原理
- 10405 - Longest Common Subsequence
- UIWebView 实现翻页功能