博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
顺序表
阅读量:7218 次
发布时间:2019-06-29

本文共 1422 字,大约阅读时间需要 4 分钟。

临近期末,学了一学期数据结构,在本学期最后一段时间,写写博客,总结一下这学期都学到了什么!

顺序表有3个优点:

(1)方法简单,各种高级语言中都有数组,容易实现。

(2)不用为表示节点间的逻辑关系而增加额外的存储开销,存储密度大。

(3)顺序表具有按元素序号随机访问的特点,查找速度快,时间复杂度小。

顺序表也有2个缺点:

(1)插入删除操作,平均移动大约表中一半的元素,因此对元素较多的顺序表执行效率低。

(2)需要预先分配存储空间,过大则容易浪费,过小又容易溢出。

来看一下顺序表的存储结构:

#define MAX_SIZE 100  //线性表最大容量

typedef char ElemType;
typedef struct{
  ElemType *elem;
  int length;  //当前表长
  int listsize;  //顺序表的最大容量
}SqList;
//初始化顺序表:
int InitList_Sq(SqList *L){  //成功返回1,失败返回0
  L.elem = (ElemType*)malloc(MAX_SIZE*sizeof(ElemType));
  if(!L.elem) return 0;  //分配存储空间失败
  L.length = 0;
  L.listsize = MAX_SIZE;
  return 1;
}
//插入操作:
int ListInsert_Sq(SqList *L, int i, ElemType e){
  if(i < 1 || i > L.ength+1)  return 0;  //i值不合法
  if(L.length >= L.listsize){  //当前存储空间已满,增加分配10个存储空间
    ElemType *newbase = (ElemType*)realloc(L.elem, (L.listsize+10)*sizeof(ElemType));
    if(!newbase) return 0;
    L.elem = newbase;
    L.listsize += 10;
  }
  ElemType *q = L.elem[i-1];  //q为插入位置
  ElemType *p = L.elem[L.length-1];
  for(; p >= q; --p)
    *(p + 1) = *p;  //插入元素之后的元素右移
    *q = e;
    ++L.length;
    return 1;  //插入成功返回1  
}
//删除操作
int List_delete_Sq(SqList *L, int i){
    if(i < 1 || i > L.ength+1)  return 0;  //i值不合法
  ElemType *q = L.elem[i-1];  //q为删除位置
  ElemType *p = L.elem[L.length-1];
  for(; p >= q; --p)
    *(p - 1) = *p;  //删除元素之后的元素左移
    --L.length;
    return 1;  //删除成功返回1  
}

 

转载于:https://www.cnblogs.com/pbnull/p/4562265.html

你可能感兴趣的文章
strcpy和memcpy的区别《转载》
查看>>
在windows平台下electron-builder实现前端程序的打包与自动更新
查看>>
DroidPilot V2.1 手写功能特别版
查看>>
COOKIE欺骗
查看>>
js 强转规范解读
查看>>
ACdream - 1735:输油管道
查看>>
golang 获取get参数
查看>>
服务器状态码
查看>>
非小型电子商务系统设计经验分享
查看>>
Video Target Tracking Based on Online Learning—深度学习在目标跟踪中的应用
查看>>
深度学习理论解释基础
查看>>
遗传算法
查看>>
将web网站移动化
查看>>
Application-Session-Cookie
查看>>
Perl的多进程框架(watcher-worker)
查看>>
phpMyAdmin 后台拿webshell
查看>>
Linux 关机 休眠, 关闭移动设备自动挂载 命令
查看>>
Html唤起手机APP,如果有就唤起,如果没有就跳到下载页。
查看>>
Java中File类如何扫描磁盘所有文件包括子目录及子目录文件
查看>>
VC++ 限制窗口的大小范围的方法
查看>>