动态构建顺序表,及顺序表的插入删除算法(C语言)
来源:互联网 发布:有趣的事情 知乎 编辑:程序博客网 时间:2024/05/23 19:37
作为数据结构初学者,发现授课过程中使用的程序,对于书中的算法有所简化(简化了动态分配内存的内容),而其他人的程序也省略了这部分内容,所以就自己敲了一下咯,格式也许不甚规范。
以下程序用VC++6.0调试,确认正确无误。
#include<stdio.h>#include<stdlib.h>#define MaxSize 10 #define begin_length 5 //注意修改#define listincrement 10typedef int ElemType;typedef struct /*顺序表的定义*/{ ElemType *elem; //存储空间基址 int length; //当前长度 int listsize; //当前分配的存储容量单位}SeqList;int Init_SeqList(SeqList *L) /*初始化一个顺序表*/{ L->elem = (ElemType*)malloc(MaxSize*sizeof(ElemType)); if(!L->elem) exit(0); L->length = 0; //空表长度为零 L->listsize = MaxSize; //初始化存储容量 return 0;}int Insert_SeqList(SeqList *L,int i,ElemType x) /*插入元素*/{ ElemType *newbase, *insertptr, *p; if(i<1 || i>L->length+1) exit(0); //非法插入 if(L->length >= L->listsize) { newbase=(ElemType*)realloc(L->elem,(L->listsize+listincrement)*sizeof(ElemType)); if(!newbase) exit(0); //存储分配失败 L->elem = newbase; //更新内存基址 L->listsize += listincrement; //增加存储容量 } insertptr=&(L->elem[i-1]); for(p = &(L->elem[L->length-1]); p >= insertptr; p--) *(p+1) = *p; *insertptr = x; L->length++; return 0;}int Delete_SeqList(SeqList *L,int i) /*删除元素*/{ ElemType *deleteptr, *p; if(i < 1 || i > L->length) exit(0); //非法删除 deleteptr=&(L->elem[i-1]); p=L->elem+L->length-1; for(deleteptr++;deleteptr<=p;deleteptr++) *(deleteptr-1) = *deleteptr; L->length--; return 0;}int Put_SeqList(SeqList *L) /*打印表*/{ ElemType *begin, *end; begin = &(L->elem[0]); end = &(L->elem[L->length-1]); if(begin == end) exit(0); //判断表是否为空表 for(;begin < end; begin++) printf("%d->", *begin); printf("%d\n", *end); return 0;}int main() //用主函数测试(实现创建一个含有五个元素的顺序表,插入第四个元素,删除第三个元素){ SeqList L; ElemType x; int i; Init_SeqList(&L); for(i = 1; i<=begin_length; i++) //创建最初表 { scanf("%d",&x); Insert_SeqList(&L, i, x); } Put_SeqList(&L); Insert_SeqList(&L,4,4); Put_SeqList(&L); Delete_SeqList(&L,3); Put_SeqList(&L); return 0;}
阅读全文
0 0
- 动态构建顺序表,及顺序表的插入删除算法(C语言)
- C语言顺序表的插入、删除、查找操作实现
- 顺序链表的插入删除等操作 C语言
- C语言实现顺序表的初始化,插入,删除,查找
- C语言实现顺序线性表的表示、插入、删除
- 顺序表的插入,删除算法
- 动态构建顺序表,合并两个顺序表(C语言)
- 【动态顺序表】 c语言的动态顺序表
- C语言:线性顺序结构(数组)的插入,删除
- 顺序表的实现(包含插入,删除,及查找)
- C语言:【动态顺序表】动态顺序表的在指定位置插入元素Insert,以及指定元素Find
- C语言动态顺序表的实现
- c语言动态顺序表的实现
- 【C语言】动态顺序表的实现
- C语言动态顺序表
- 动态顺序表的实现,插入删除查找修改...
- 动态顺序表(C语言实现)
- 关于c语言编写 顺序表 的创建、插入、修改、删除、显示、退出 的程序案例
- 1.1算法研究-动态规划
- 从零开始写javaweb框架笔记21-使框架具备AOP特性-ThreadLocal简介
- go httpClient 好坑
- Codeforces Round #424 (Div. 2) B. Keyboard Layouts(字符串处理)
- hdu1171(01背包问题)
- 动态构建顺序表,及顺序表的插入删除算法(C语言)
- solrJ的使用以及solr集群的搭建
- Linux终端am命令用法
- cakephp表关联查询
- Mybatis 示例之 SelectKey
- BZOJ 1003 物流运输(最短路+DP)
- RecyclerView之CheckBox实现单选效果
- SpringMVC <mvc:view-controller path=""/>标签
- MySQL中的datetime与timestamp比较