简单线性表
来源:互联网 发布:系统还原数据会消失吗 编辑:程序博客网 时间:2024/04/18 21:38
头文件
#define INITSIZE 100 //线性表的初始大小 #define INCREACEMENT 10 //定义线性表的分配容量 struct List { int * firstElement ; //首元素的地址 int length ; //现有元素个数 int allocate_size ; //当前的最大容量 }; /* 初始化L */ void init_List(List * L) ; /*在L中的i位置插入元素element*/ void insertInto_List(List* L, int i, int element) ; /*删除线性表中位序为elementIndex的元素, 用delectElement 返回 */ void delect_list(List * L, int elementIndex, int * delectElement) ; /*返回节点在线性表中的位序 */ int local_List(const List * L , int element) ; /*输出线性表中的元素 */ void showElement(const List * L) ; /*释放 */void free_list(List * L) ;方法文件
#include <stdio.h> #include <malloc.h> #include <stdlib.h>#include "list_head.h" /* 初始化L */ void init_List(List * L) { L->firstElement = (int *)malloc(INITSIZE*sizeof(int)); if(!L->firstElement) { fprintf(stderr,"初始化错误"); exit(EXIT_FAILURE); } L->length = 0; L->allocate_size = INITSIZE; } /*在L中的i位置插入元素element*/ void insertInto_List(List* L, int i, int element) { if(i > L->length+1 || i<1) { fprintf(stderr,"插入错误"); exit(EXIT_FAILURE); } if(L->length >= L->allocate_size) { int * newbase = (int *)realloc(L->firstElement, (L->allocate_size + INCREACEMENT)*sizeof(int)); if(!newbase) { fprintf(stderr,"线性表扩大错误"); exit(EXIT_FAILURE); } L->allocate_size += INCREACEMENT; } int * p ; for( p = (L->firstElement+i-1); p <= L->firstElement+L->length+1; p++ ) { *(p + 1) = *p; } *(L->firstElement + i - 1) = element; L->length += 1 ; } /*删除线性表中位序为elementIndex的元素, 用delectElement 返回 */ void delect_list(List * L, int elementIndex, int * delectElement) { if(elementIndex < 1 || elementIndex > L->length) { fprintf(stderr,"元素位序超出范围.\n"); exit(EXIT_FAILURE); } //elementIndex - 1的元素赋值给 delectElement * delectElement = *(L->firstElement + elementIndex - 1); //释放掉elementIndex - 1这块内存 free(L->firstElement + elementIndex -1); //elementIndex后面的元素位序依次减一 for(int * i = (L->firstElement + elementIndex); i < (L->firstElement + L->length); i++) { *(i-1) = *i; } //L的长度减一 --L->length; } /*返回节点在线性表中的位序 */ int local_List(const List * L , int element) { //定义返回的位序 默认此节点不在线性表中 int element_Int = -1; //循环线性表 for(int i=0;i < L->length; i++) { //取线性表的数据与element比较 if(*(L->firstElement+i) == element) { //若相等i赋值给element_int element_Int = i; } } return element_Int; } /*输出线性表中的元素 */ void showElement(const List * L) { for(int i = 0; i<L->length; i++) { printf("firstElement[%d]=%d\n",i,*(L->firstElement + i)); } } /*释放 */void free_list(List * L){if(L->firstElement != NULL){free(L->firstElement);L->firstElement = NULL;} if(L != NULL){free(L); L = NULL;} }
调用文件
#include "list.h"#include <stdio.h> #include <stdlib.h> int main(void) { List list; init_List(&list); int delectElement; insertInto_List(&list, 1, 5); insertInto_List(&list, 2, 6); showElement(&list); //int index = local_List(&list, 7); delect_list(&list,2,&delectElement); printf("删除的元素为:%d\n", delectElement); showElement(&list); free_list(&list); return 0; }
- 简单线性表
- 线性表简单操作
- 简单总结线性表
- 线性表的简单总结
- 线性表的简单实现
- 线性表的简单实现
- 一个简单线性链表
- 线性表的简单实现
- 简单的动态线性表
- 数据结构之简单线性表
- 简单的线性表-顺序表
- 线性表-顺序表的简单知识
- 线性表-链表的简单操作
- 自定义线性表的简单例子
- 线性顺序表的简单操作
- 最简单的数据结构----线性表
- c语言构造简单的线性表
- 简单数据结构-数组实现线性表
- Stimulsoft报表开发论坛即将召开,关注移动平台报表开发
- How to Debug
- matlab学习--mat文件
- 【Sencha Toucha】Sencha Touch ExtJs 给 Button 添加图片
- (转)sharedUserId和签名Android权限
- 简单线性表
- 函数
- hibernate 多条件组合查询之sql拼接
- ubuntu 深度音乐播放器
- android intent
- 图片转换成二进制与二进制转换成图片
- Dungeon Master (P2251)
- (转)Android很有用的代码片段
- perl正则表达式