C构造线性表
来源:互联网 发布:iphone神器软件 编辑:程序博客网 时间:2024/05/01 15:14
如题
#include<stdio.h>#include<stdlib.h>#define TRUE 1#define FALSE 0#define OK 1#define ERROR -1#define initsize 4#define addsize 2typedef int status;typedef int ElemType;typedef struct //结构体构建{ ElemType *elem; //储存空间基址 int len; //表的当前长度 int size; //当前分配的存储容量} Line;status LineInit(Line *L) //构造一个空的线性表{ (*L).elem = (ElemType *)malloc(initsize*sizeof(ElemType)); //根据存储空间基址类型开辟空间 if((*L).elem==NULL) exit (FALSE); //分配失败 (*L).len=0; //空表的长度为0 (*L).size=initsize; //初始储存容量 return OK;}status LineInsert(Line *L,int i,ElemType e) //插入数据{ ElemType *newbase; //开辟新的空间 ElemType *p; //定义指针 int j; if(i<1 || i>(*L).len+1) return FALSE; if((*L).len == (*L).size)//线性表满 { newbase=(ElemType *)realloc((*L).elem,((*L).size+addsize)*sizeof(ElemType)); //开辟新空间 if(!newbase) exit (FALSE); //开辟失败,退出 (*L).elem=newbase; //指针指向新开辟的空间 (*L).size=(*L).size+addsize; } //插入数据 p=(*L).elem; for(j=0; j<(*L).len-i+1; j++) *(p+(*L).len-j)=*(p+(*L).len-j-1); *((*L).elem+i-1)=e; (*L).len++; return OK;}status LineDelete(Line *L,int i,ElemType *e)//删除数据{ int j; if(i<1 || i>(*L).len) return FALSE; *e=*((*L).elem+i-1); for(j=0; j<(*L).len-i; j++) *((*L).elem+i-1+j)=*((*L).elem+i+j); (*L).len--; return OK;}status LineDisplay(Line L) //展示表中原有的数据{ int i; for(i=0; i<L.len; i++) { printf("%5d",*(L.elem+i)); } printf("\n"); return OK;}status LineLenth(Line L) //返回当前表长{ return L.len;}status LineEmpty(Line *L) //清空列表{ (*L).len=0; return OK;}status LineDestory(Line *L) //释放内存{ free((*L).elem); (*L).elem=NULL; (*L).len=0; (*L).size=0; return OK;}status ElemGet(Line L,int i,ElemType *e) //获取新的元素{ if(i<1 || i>L.len) return FALSE; *e=*(L.elem+i-1); return OK;}int main(){ Line L; ElemType i,e; LineInit(&L); //初始化 for(i=0; i<initsize+5; i++) //插入一些测试数据 { LineInsert(&L,1,i); } printf("current number is\n"); LineDisplay(L);//显示线性表的内容 LineDelete(&L,2,&e);//删除其中一个数据 printf("after delete No.2\n"); LineDisplay(L);//显示线性表的内容 ElemGet(L,3,&e);//获取其中一个数据 printf("ElemGet No.3 is %d\n",e); LineInsert(&L,5,34);//再次插入测试数据 printf("after add No.5\n"); LineDisplay(L); LineEmpty(&L);//清空线性表的内容 LineDestory(&L);//销毁这个线性表 return 0;}
阅读全文
0 0
- C构造线性表
- c语言构造简单的线性表
- 线性表的构造
- 线性表(C++)
- 数据结构-线性表 (C++)
- Objective-C 线性表
- 数据结构线性表c
- 线性顺序表C
- 线性链表C
- 线性表--单链表(C++)
- C - 数据结构 - 线性表
- C线性表
- 线性表 C
- 线性表(C++)
- 线性表(C++)
- C语言-线性表
- 求幂集(线性表+先序遍历构造)
- 线性探测法构造hash表
- sqoop学习笔记-sqoop安装部署
- range类型
- 莫队算法模板
- 【入门篇】Activiti流程绘制说明
- 数据结构练习题
- C构造线性表
- hud 1013 求一个数的数字根
- Ubuntu16.04.3LTS+CUDA8.0+cudnn5.1+tensorflow-gpu(1.2)安装配置信息汇总
- android 判断手机是否有物理menu键
- select用法
- 【bzoj3170】[Tjoi 2013]松鼠聚会
- 停课总结(三)
- codeforces——875B —— Sorting the Coins
- 分治算法-球队循环赛日程安排-java实现