顺序表基本操作样例
来源:互联网 发布:七天网络注册账号入口 编辑:程序博客网 时间:2024/06/07 20:10
顺序表基本操作样例
基本代码
#include <stdio.h>#include <stdlib.h>#include <malloc.h>#define LISTINCREASMENT 100 /*每次分配元素的个数*/#define LISTSIZE 10 /*顺序存储的最大个数*/#define OVERFLOW -1#define OK 1 typedef int ElemType;typedef struct /*顺序表元素的的定义*/{ ElemType * elem; int length; int listsize;} Sqlist;int SqInitial(Sqlist &L) /*初始化线性表*/{ L.elem=(ElemType *) malloc (LISTSIZE*sizeof(ElemType)); if (! L.elem) exit(OVERFLOW); //存储分配失败 L.length=0; L.listsize=LISTSIZE; return OK;}int ListInsert(Sqlist &L,int i,ElemType e) /*插入元素*/{ if(i<1|| i > L.length+1) printf("ERROR!"); if(L.length>=L.listsize) { ElemType*newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREASMENT) *sizeof(ElemType)); if(!newbase) return OVERFLOW;// 当前存储空间已满 L.elem=newbase; L.listsize+=LISTINCREASMENT; /*表的容量不足分配内存*/ } ElemType *q=&(L.elem[i-1]); ElemType *p; for(p=&(L.elem[L.length-1]); p>=q; --p) *(p+1)=*p; *q=e; ++L.length; return OK;}void ListDelete(Sqlist &L,int i,ElemType &e) //删除线性表中第i个位置上的元素{ if(i<1||i>L.length) printf("ERROR!"); else { e=L.elem[i-1]; for(;i<L.length;i++) { L.elem[i-1]=L.elem[i]; } L.length--; }}ElemType GetElem(Sqlist &L,int i){ if(i<1||i>L.length) printf("ERROR!"); else { return L.elem[i-1]; }}int main(){ Sqlist L; int t = 1 ,d; SqInitial(L); printf("构建长度为7的顺序表。\n"); for(t=1; t<=7; t++) /*构建长度为7的顺序表*/ { printf("Please input the %dth list elem:",t); scanf("%d",&d); ListInsert(L,t,d); } printf("表长: %d\n",L.length); /*输出表长*/ for(t=1; t<=L.length; t++) printf("%d ",L.elem[t-1]);/*读表*/ printf("\n删除的位置:"); //删除元素 scanf("%d",&t); ListDelete(L,t,d); printf( "删除元素的值:%d\n",d); printf( "删除后的表:"); for(t=1; t<=L.length; t++) printf("%d ",L.elem[t-1]); //删除后的表 printf("\n要插入的位置"); //插入元素 scanf("%d", &t); printf("要插入的值"); scanf("%d",&d); ListInsert(L, t, d); printf( "插入以后的表:"); for(t=1; t<=L.length; t++) //插入以后的表 printf("%d ",L.elem[t-1]); printf("\n要检索的元素的位置:"); //检索元素 scanf("%d", &t); d=GetElem(L, t); printf( "该元素的值为:%d\n",d); return 0;}
阅读全文
0 0
- 顺序表基本操作样例
- 顺序表基本操作
- 顺序表基本操作
- 顺序表基本操作
- 顺序表基本操作
- 顺序表基本操作
- 顺序表基本操作
- 顺序表基本操作
- 顺序表基本操作
- 顺序表基本操作
- 顺序表基本操作
- 顺序表基本操作
- 顺序表基本操作
- 顺序表基本操作
- 顺序表的基本操作
- 顺序表的基本操作
- 顺序表的基本操作
- 顺序表的基本操作
- skynet examples深入学习
- java 中的访问修饰符
- 在用户线程/主线程中推荐MsgWaitForMultipleObjects代替WaitForSingleObject和WaitForMultipleObjects()函数
- 字符串转换
- SQL Server 2008中的代码安全(一):存储过程加密与安全上下文
- 顺序表基本操作样例
- 在Spring中配置jdbcTemplate
- 如何复制或导出托管磁盘
- 线程安全与非线程安全
- 【论文笔记】Spatial Transformer Networks
- 【LoadingDialog】标准款待加载对话框
- 02繁花嗅Django笔记
- java开发微信项目总结(二) 如何获取微信的OpenId
- js nan===nan