简单的顺序表c语言实现
2016-07-25 00:00
363 查看
摘要: c语言实现简单顺序表几种常用操作
#include <stdio.h> #include <stdlib.h> //存放的数据类型 #define ElemType int //表的大小 #define MAX_SIZE 100 typedef struct { ElemType *e; //数据 int len; //已经存放的数据数目 int size; //可以存放的数据数目 } SqList; void initSqList(SqList* list); void showList(SqList* list); void appendElem(SqList *list,ElemType e); void insertElem(SqList* list,int i,ElemType e) ; void delElem(SqList *list,int i); int main(int argc, char *argv[]) { SqList *list=(SqList*)malloc(sizeof(SqList)); initSqList(list); appendElem(list,3); appendElem(list,6); appendElem(list,1); appendElem(list,2); showList(list); insertElem(list,3,10); showList(list); delElem(list,4); showList(list); free(list); return 0; } //初始化 void initSqList(SqList* list){ list->e = (ElemType *)malloc(sizeof(ElemType)*MAX_SIZE); list->len=0; list->size=MAX_SIZE; printf("initList successful!\n"); return; } //打印表中数据 void showList(SqList* list){ if(list == NULL || list ->len == 0 ) { printf("this list is empty!\n"); return; } int i,len; len=list->len; printf("this list have %d elems:\n",len); for(i=0;i<len;i++){ printf("%d ",list->e[i]); } printf("\n"); return; } //在表的最后附加数据 void appendElem(SqList *list,ElemType e){ int len=list->len,size=list->size; if(len+1>size) { printf("append err:this list is full\n"); return; } list->e[len] = e; list->len++; //不能使用局部变量len++ return; } //在表的第i个元素之前插入新数据 void insertElem(SqList* list,int i,ElemType e){ int len=list->len,size=list->size; if(len+1>size || i<1 || i>len+1) { printf("insert err\n"); return; } if(i==len+1) { appendElem(list,e); return; } int j; ElemType *p; for(j=len;j>=i;j--){ //第i个元素以及以后元素依次向后移动一位 p=&list->e[j]; *p = list->e[j-1]; } list->e[j]=e; list->len++; return; } //删除第i个元素 void delElem(SqList *list,int i){ int len=list->len; if(i<1 || i>len || len<0){ printf("del err\n"); return; } int j; ElemType *p; for(j=i;j<len;j++){ //第i+1个元素依次向前移动一位 p=&list->e[j-1]; //数组元素序号由0开始,元素位数由1开始 *p=list->e[j]; } list->len--; return; }
相关文章推荐
- c语言实现简单链表
- 李洪强漫谈iOS开发[C语言-021]-运算符
- C++ Union
- 一起talk C栗子吧(第一百七十七回:C语言实例--字符及字符串输入函数二)
- boost::function与回调函数
- 浅析C++const
- C语言课程设计——学生信息管理系统(BUG挺多,敬请指正)
- C语言排序算法
- C语言排序算法
- 20160724-leetcode-array
- 20160724-leetcode-array
- hdu 3699 fzu 2009 A hard Aoshu Problem 枚举 模拟
- 【华为机试】题目+解答+自己不足+提升
- c++ memset 、memcpy、strcpy、strlen、strcat、ASCII 问题
- c语言第一天 终端的使用 .c .o .out 文件的解释 快捷键等
- Leetcode 18. 4Sum (Medium) (cpp)
- 【每日算法】C语言8大经典排序算法(2)
- 【每日算法】C语言8大经典排序算法(1)
- Leetcode 16. 3Sum Closest (Medium) (cpp)
- 多线程