动态顺序表
来源:互联网 发布:dive into python pdf 编辑:程序博客网 时间:2024/06/04 20:12
//动态顺序表//引用库函数 #include <stdio.h>#include <stdlib.h> //宏定义#define List_init_size 4#define List_add_size 2#define OVERFLOW -2 typedef int Elemtype; // Elemtype元素类型 //定义结构体typedef struct{ Elemtype *elem; //存储空间首地址(基址) int length; int Listsize; //当前分配的存储容量 }SqList; //结构体名 //函数声明void InitList(SqList *l); //构造一个空的顺序表void ListInsert(SqList *l,int i,int a); //顺序表的增加元素 void ListDelete(SqList *l,int i); //顺序表的删除元素 void ListPrintf(SqList *l);#include <stdio.h>int main(){ SqList l; InitList(&l); ListInsert(&l,1,15); ListInsert(&l,1,16); ListInsert(&l,1,20); ListInsert(&l,1,30); ListInsert(&l,2,45); ListPrintf(&l); ListDelete(&l,1); ListPrintf(&l); return 0;}void ListPrintf(SqList *l){ printf("打印出list如下:\n"); for(int i=0;i<l->length;i++) { printf("%d ",l->elem[i]); } printf("list长度为:%d\n",l->length);} //构造一个空的顺序表void InitList(SqList *l){ l->elem =(Elemtype *)malloc(List_init_size*sizeof(Elemtype)); if(!l->elem)exit (OVERFLOW); //存储分配失败 l->length =0; l->Listsize =List_init_size; }//顺序表的增加元素 void ListInsert(SqList *l,int i,int a){ //这里插入的位置i 意思为插在 i 之前的一个位置 if(i<1 || i>l->length+1) printf("你要插入的位置不合法!.....插入失败!\n"); else{ if(l->length >= l->Listsize) { printf("到这里增加了存储空间!"); Elemtype *newbase;//分配一个临时基址 newbase=(Elemtype *)realloc(l->elem,(List_init_size+List_add_size)*sizeof(Elemtype)); if(!newbase) exit(OVERFLOW); l->elem=newbase; l->Listsize += List_add_size; } if(l->length!=0) { for(int j=l->length-1;j>=i-1;j--) //第I个元素及之后的元素后移一位(从数组尾部开始移) { l->elem[j+1] =l->elem[j]; } } l->elem[i-1]=a; l->length++; printf(""); ListPrintf(l); } }//顺序表的删除元素 void ListDelete(SqList *l,int i){ if(l->length == 0) printf("空表,没有元素可以删除!\n"); else if(i<0|| i>=l->length) printf("你要删除的位置不合法!.....删除失败!\n"); else{ for(int j=i;j<l->length;j++) { l->elem[j]=l->elem[j+1]; } l->length--; } }
0 0
- 动态顺序表
- 数据结构---动态顺序表
- 动态顺序表
- 动态顺序表
- 动态顺序表
- 动态顺序表
- 动态顺序表算法
- 动态顺序表
- 动态实现顺序表
- 动态顺序表
- 动态顺序表
- 实现动态顺序表
- 动态顺序表
- 动态顺序表
- 动态顺序表
- 顺序表(动态)
- 顺序表(动态)
- 动态顺序表
- Android XML 不常用属性
- DWR框架简介
- mpstat命令
- 聚类算法总结
- Hadoop2.6.0单机/伪分布式安装
- 动态顺序表
- 如何提取PDF文件中的部分页面内容
- 卡车图像分离车头、车厢、车轮
- 110.View the Exhibit and examine the structure of the CUSTOMERS table.
- 世界领先的跨平台开发技术Qt Enterprise 5.6 新功能预览
- Binlog_cache_size
- iOS微信支付
- 2. PSR-2 --- 代码风格指南
- ffmpeg解码流程