数据结构---线性表的顺序储存
2016-09-14 13:41
225 查看
数据结构中最基础的部分便是线性表得顺序储存结构,特在此分享一下
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <iostream> using namespace std; typedef struct { int *elem; int max_size; int n; }Sqlist; typedef enum{ERROR, OK} Status; Status initiate(Sqlist *p, int max_size)//初始化 { p->n = 0; //线性表内容的长度 p->max_size = max_size; //线性表的容量,即最大容纳的元素的个数 p->elem = (int *)malloc(sizeof(int)*max_size);//分配内存 if(!p->elem) return ERROR; return OK; } void clear(Sqlist *p)//清空线性表 { p->n = 0; } void destroy(Sqlist *p) // 摧毁线性表 { p->max_size = 0; p->n = 0; free((void *)p->elem); } /*!!!!有空测试下形参不用引用的结果是否正确!!!!*/ Status insert(Sqlist *p, int i, int e) //插入算法,将元素e插入到i号元素之前,时间复杂度O(n/2) { if(p->n >= p->max_size) return ERROR; //空间已满 if(i<0 || i>p->n) return ERROR; //插入位置无效 int j; for(j = p->n; j >i; j--) p->elem[j] = p->elem[j-1]; p->elem[i] = e; (p->n)++; return OK; } Status del(Sqlist *p, int i) //删除线性表里的i号元素 { if(p->n <= 0 ) //线性表的大小为0 return ERROR; if(i<0||i>p->n) //删除元素的下标无效 return ERROR; int j; for(j = i+1; j <p->n; j++) p->elem[j-1] = p->elem[j]; p->n--; return OK; } int locate(Sqlist *p, int e) //查找e是否在线性表中 { int i; for(i = 0; i<p->n; i++) if(p->elem[i] == e) break; if(i == p->n)//e不在线性表中,返回-1 i = -1; return i; } Status merge(Sqlist *a, Sqlist *b, Sqlist *c)//合并顺序表a,b 存于c中 { if(a->n + b->n > c->max_size) return ERROR; int i, j , k; i = k = j = 0; c->n = a->n + b->n; while(i<a->n && i<b->n) if(a->elem[i] < b->elem[i])//升序插入 c->elem[k++] = a->elem[i++]; else c->elem[k++] = b->elem[j++]; while(i<a->n) c->elem[k++] = a->elem[i++]; while(j<b->n) c->elem[k++] = b->elem[j++]; return OK; } int main() { Sqlist list; Sqlist *h = &list; initiate(h , 100);//初始化一个表 int i = 0; for(i = 0; i < 100; i++) if(!insert(h, i,i))//插入功能的验证 { cout << "插入出错\n" << endl; exit(0); } /* if(!del(h, 77))//删除的验证 { cout << "删除错误\n"<< endl; exit(0); } */ cout << locate(h, 78) << endl; //验证定位函数 for(i = 0; i<100; i++) cout << h->elem[i] << endl; return 0; }
相关文章推荐
- 数据结构-线性表之顺序储存(Java实现)
- 数据结构之线性结构---栈 顺序储存
- 数据结构 --- 线性表 顺序储存 链式储存
- 数据结构之线性结构---队列 顺序储存
- 数据结构中线性表的顺序储存结构
- 数据结构-线性表之顺序储存(Java实现)
- 数据结构 | 如何实现线性表的顺序结构
- 线性表的顺序实现——数据结构课堂作业
- 线性表--顺序储存结构
- 数据结构Java实现02----线性表与顺序表
- C# 数据结构 线性表(顺序表 链表 IList 数组)
- 线性表的顺序储存结构定义(动态)实现
- 严蔚敏版数据结构学习笔记(1):线性表的顺序表示和实现
- PHP数据结构之二 线性表中的顺序表的PHP实现
- 数据结构系列-线性表的顺序存储及基本操作
- 数据结构---线性表的顺序实现
- 数据结构笔记2 线性表之顺序表
- [数据结构]线性表之顺序表的类模板实现
- 线性表的顺序表示和实现(数据结构)
- 数据结构之线性表之顺序表和链表(通过数据结构角度深入理解arrayList和linkedList的特性)