C 数据结构 笔记(一) —— 顺序表
2017-12-20 15:05
127 查看
顺序表
内存单元连续以表名唯一标识
数据有先后关系
顺序表定义
静态定义#define MaxSize 100 ElemType Sqlist[MaxSize]; int len;
动态生成
#define MaxSize 100 typedef struct { ElemType *elem; int length; int listsize; } Sqlist; void createSqlist(Sqlist *L) { L->elem = (ElemType *)malloc(MaxSize*sizeof(ElemType)); if (!L->elem) exit(0); L->length = 0; L->listsize = MaxSize; }
插入元素
静态表插入void insertElem(ElemType Sqlist[], int n, int i, ElemType item) { int t; if (n == MaxSize || i < 1 || i > n + 1) exit(0); for (t = n - 1; t >= i-1; t--) { Sqlist[t+1] = Sqlist[t]; } Sqlist[i-1] = item; n += 1; }
动态表插入
void insertElem(Sqlist *L, int i, ElemType item) { ElemType *base; ElemType *insPtr; ElemType *p; if (i < 1 || i > L->length+1) exit(0); if (L->length >= L->listsize) { base = (ElemType *)realloc(L->elem, (L->listsize+100)*sizeof(ElemType)); L->elem = base; L->listsize = L->listsize + 100; } insPtr = &(L->elem[i-1]); for (p = &(L->elem[L->length-1]); p >= insPtr; p--) { *(p+1) = *p; } *insPtr = item; L->length += 1 }
删除元素
静态表删除void deleteElem(ElemType Sqlist[], int n, int i) { int j; if (i < 1 || i > n) exit(0); for (j = i; j < n; j++) { Sqlist[j-1] = Sqlist[j]; } n -= 1; }
冻态表删除
void deleteElem(Sqlist *L, int i) { ElemType *delPre; ElemType *p; if (i < 1 || i > L->length) exit(0); delPre = &(L->elem[i-1]); q = L->elem + L->length-1; for (++delPre; delPre <= q; ++delPre) { *(delPre-1) = *delPre; } L->length -= 1; }
相关文章推荐
- 数据结构笔记之顺序栈
- 数据结构学习笔记:顺序表
- 队列的顺序存储和链式表示方法-数据结构学习笔记2.3
- 数据结构笔记之顺序表
- 数据结构学习笔记1-线性表(顺序表,单链表)
- 数据结构学习笔记 --- 队列(循环队列-队列的顺序表示和实现)
- 数据结构学习笔记 --- 线性表 (顺序表)
- 数据结构学习笔记:顺序栈与链栈
- 数据结构学习笔记-队列的顺序存储(循环队列)
- 数据结构笔记2 线性表之顺序表
- 数据结构学习笔记 --- 队列(循环队列-队列的顺序表示和实现)
- 数据结构笔记2 线性表之顺序表
- 【数据结构----笔记1】查找算法之【顺序查找和折半查找】
- 数据结构编程笔记三:第二章 线性表 顺序表的实现
- 学习数据结构笔记--顺序表的数组实现
- 数据结构学习笔记3——顺序表的实现
- 数据结构学习笔记 --- 线性表 (顺序表)
- 数据结构 学习笔记之:关于顺序栈中给结构体类型指针分配内存时,使用malloc和不使用malloc的疑惑之解惑!
- 数据结构学习笔记-线性表顺序存储(C语言实现)
- 数据结构学习笔记-栈的顺序存储(C语言实现)