顺序表
2016-03-15 17:47
337 查看
顺序表:线性数据元素存储到一个连续的存储空间中,比如数组
顺序表的实现
“sqList.h”
“sqList.cpp”
“main.cpp”
线性表的顺序存储结构有存储密度高及能够随机存取等优点,但存在不足:
1.插入、删除等运算耗时,且存在元素在存储器中成片移动的现象
2.要求系统提供一片较大的连续存储空间
顺序表的实现
“sqList.h”
#ifndef SQLIST_H_ #define SQLIST_H_ #include <stdio.h> #define MAX 1024 typedef struct { int data[MAX]; int last;// 含有数组元素个数的下标,比如数组 }sqList,*sqLink; void CreateList(sqLink L); // 创建空表 int EmptyList(sqLink L); // 判空表 void ClearList(sqLink L); //置空表 int GetList(sqLink L, int no); // 取表元素(根据no) int InsertList(sqLink L, int data, int no); // 插入元素 int DelList(sqLink L, int no); // 删除元素(根据no) int LocateList(sqLink L, int data); // 定位元素 void PrintList(sqLink L); // 打印表数据 int LengthList(sqLink L); // 求取表长度 #endif;
“sqList.cpp”
#include "sqList.h" // 创建空表, void CreateList(sqLink L) { int temp = 1; int tempdata = 0; do { printf("请输入第%d个元素:", tempdata); scanf("%d", &tempdata); if (tempdata != -1) { L->data[temp-1] = tempdata; L->last = temp - 1; temp++; } }while(temp <= MAX && tempdata!= -1); } // 判空表 int EmptyList(sqLink L) { if (L->last == -1) return -1; else return 0; } //置空表 void ClearList(sqLink L) { L->last = -1; } // 取表元素(根据no) int GetList(sqLink L, int no) { if (no < 0 || no >= L->last+1) return -1; return L->data[no-1]; } // 打印表数据 void PrintList(sqLink L) { int i; for (i = 0; i < LengthList(L); i++) { printf("%d ", L->data[i]); } printf("\n"); } // 求取表长度 int LengthList(sqLink L) { return L->last+1; } int InsertList(sqLink L, int data, int no) // 插入元素 { int j; if (L->last >= MAX-1) { printf("没有空闲空间!\n"); return -1; } else if (no < 0 || no > L->last +1) { printf("插入位置不存在!\n"); return -1; }else{ for (j = L->last; j >= no; j--) { L->data[j+1] = L->data[j]; } L->data[no] = data; L->last++; return 0; } return 0; } // 删除元素(根据no) int DelList(sqLink L, int no) { int j; if (no < 0 || no > L->last+1) { printf("删除位置不存在!\n"); return -1; } else { for (j = no+1; j <= L->last+1; j++) { L->data[j-1] = L->data[j]; } L->last--; return 0; } } // 定位元素,第一个为data数据 int LocateList(sqLink L, int data) { int i = 0; while (i <= L->last && L->data[i] != data) i++; if (i <= L->last) return (i); else return -1; }
“main.cpp”
int main() { sqLink L = (sqLink)malloc(sizeof(sqList)); CreateList(L); PrintList(L); return 0; }
线性表的顺序存储结构有存储密度高及能够随机存取等优点,但存在不足:
1.插入、删除等运算耗时,且存在元素在存储器中成片移动的现象
2.要求系统提供一片较大的连续存储空间
相关文章推荐
- 1004 problem E
- 全志(allwinner)开发心得
- man 3 getaddrinfo
- 静默调用ShellContextMenu 实现QQ文件共享
- mysql心得
- 委托和协议
- hdu 5643 King's Game (dp约瑟夫环)
- mysql心得
- nginx中的if嵌套
- phpstorm小总结
- 模板模式(7)
- iOS本地推送
- Eclipse代码提示功能失效
- 细说Angular ng-class
- MAC中在eclipse luna上搭建移动平台自己主动化測试框架(UIAutomator/Appium/Robotium/MonkeyRunner)关键点记录
- 从jvm源码解读Java运行时的类加载
- 安装mysql时 Write configuration file 错误的解决办法
- hdu 2089 不要62
- 基于java web的博客平台(六)
- MySQL查询:查询一个表中类别字段中Max()最大值对应的记录