数据结构(一)顺序表1:顺序存储的基本操作
来源:互联网 发布:gtp软件手机版 编辑:程序博客网 时间:2024/05/16 15:36
线性表是一种最简单的线性结构。
线性表:n个类型相同的元素的有限集合。(每个数据之间存在着唯一的顺序关系)
线性表有两种存储结构:顺序存储结构和链式存储结构。
1.线性表的定义:
#include<iostream>#include<cstdlib>//#include<bits/stdc++.h>using namespace std;#define MAXSIZE 100//const int MAXSIZE=(100);<pre name="code" class="cpp">void Initlist(Sqlist &l); //初始化线性表;void Createlist(Sqlist &l); //创建线性表bool Isempty(Sqlist l); //判断线性表是否为空void Insert_elem(Sqlist &l,int i,int e); //在线性表的第i个位置插入元素esvoid Delete_elem(Sqlist &l,int i,int *e); //在线性表的第i个位置删除元素evoid Clearlist(Sqlist &l); //清空线性表中元素int Length(Sqlist l); //求线性表的长度int Getelem(Sqlist l,int i); //求线性表第i个位置的元素void Locatedelem(Sqlist l,int e,int *i); //求元素e在线性表中的位置
typedef struct node{int *data;//储存空间基地址int length;//当前表长}Sqlist;
2.初始化线性表:
//初始化线性表void Initlist(Sqlist &l) {//将线性表的表长置为0l.data=(int *)malloc(sizeof(int));if(!l.data) exit (-2); //储存空间分配失败l.length=0; //将线性表的表长置为0}
3.创建线性表:
//创建线性表void Create(Sqlist &l) {//创建线性表int data;cin>>data;int i=0;while (data!=-1) {l.data[i]=data;cin>>data;i++;}l.length=i;}
4.判断线性表是否为空:
//判断线性表是否为空bool Isempty(Sqlist l) {//表长是否=0if(l.length==0) return true; else return false;}
5.判断线性表是否为满
//判断线性表是否为满bool Isfull(Sqlist l) {//l.length>=MAXSIZE;if(l.length>=MAXSIZE) return true;else return true;}
//求线性表第i个位置的元素int Getelem(Sqlist l,int i) {//第i个位置的元素=data[i-1]//判断i是否合法int e;if(i<1 || i>l.length) exit(-2);return e=l.data[i--];}
7.//求元素e在线性表中的位置
//求元素e在线性表中的位置int Locatedelem(Sqlist l,int e) {//data[i]==e,是第i+1个位置for(int i=0;i<l.length;i++) {if(l.data[i+1]==0)return i;}return -1; //没有找到}
8.在线性表的第i个位置插入元素e
//在线性表的第i个位置插入元素evoid Insert_elem(Sqlist &l,int i,int e) {//data[i-1]=e,//从表尾到位置i的元素位置+1//判断i是否合法//判断线性表是否为满if(i<1 || i>l.length) exit(-2);else if(l.length>=MAXSIZE) exit(-2);else {l.data[i-1]=e;for(int j=l.length;j>=i;j--)l.data[j]=l.data[j-1];l.length++;}}
9.在线性表的第i个位置删除元素e
//在线性表的第i个位置删除元素evoid Delete_elem(Sqlist &l,int i,int e) {//data[i-1]=e,//从位置i到表尾的元素位置-1//判断i是否合法//判断线性表是否为空if(i<1 || i>l.length) exit(-2);else if(l.length==0) exit(-2);else {e=l.data[i-1];for(int j=i;j<=l.length;j++)l.data[j-1]=l.data[j];l.length--;}}
10.清空顺序表
//清空顺序表void Clearlist(Sqlist &l) { l.length=0;}
11.求顺序表的长度
//求顺序表的长度int Length(Sqlist l) { return l.length;}
//输出顺序表中的元素void Printflist(Sqlist l) { int i=0; while(l.data[i]) { cout<<l.data[i]<<" "; i++; } cout<<endl;}
13.主函数:
int main () { Sqlist l; int e,i; Initlist(l); Create(l); cout<<"刚刚创建的顺序表为:"; Printflist(l); cout<<"刚刚创建的顺序表长度为:"; Length(l); cout<<endl; Isempty(l); Isfull(l); e=Getelem(l,3); cout<<"刚刚创建的顺序表的第3个位置的元素为:"; cout<<e<<endl; i=Locatedelem(l,3); cout<<"刚刚创建的顺序表中元素3的位置为:"; cout<<i<<endl; Insert_elem(l,3,2); cout<<"在刚刚创建的顺序表中第三个位置插入元素2后的顺序表为:"; Printflist(l); cout<<"在刚刚创建的顺序表中第三个位置插入元素2后的顺序表长度为:"; Length(l); cout<<endl; Delete_elem(l,3,2); cout<<"在刚刚创建的顺序表中第3个位置删除元素2后的顺序表为:"; Printflist(l); cout<<"在刚刚创建的顺序表中第3个位置删除元素2后的顺序表长度为:"; Length(l); cout<<endl;return 0;}
0 0
- 数据结构(一)顺序表1:顺序存储的基本操作
- 数据结构 串(顺序存储)的基本操作
- 数据结构学习---线性表顺序存储结构的基本操作
- 数据结构之顺序表的基本操作
- 数据结构:顺序表的基本操作
- 实现数据结构顺序表的基本操作
- 【C++/数据结构】顺序表的基本操作
- 【数据结构】顺序表的基本操作
- 【数据结构】顺序表的基本操作
- 数据结构-顺序表的基本操作
- 数据结构-顺序表的基本操作
- 数据结构-顺序表的基本操作
- 数据结构-顺序表的基本操作
- 数据结构--循环队列的顺序存储基本操作
- 线性表顺序存储的基本操作
- 数据结构学习---线性表顺序存储结构的应用(一):删除操作
- 数据结构之线性表(顺序表)的基本操作
- 数据结构学习笔记(顺序表的基本操作)
- BZOJ 3476: [Usaco2014 Mar]The Lazy Cow
- Hdu5128 - The E-pang Palac
- 【随笔】Spring中的监听器ContextLoaderListener
- 第九周OJ总结<2>-ASCII码排序
- 稻草人 贪心
- 数据结构(一)顺序表1:顺序存储的基本操作
- windows ftp Linux
- 灵敏度的定义
- MyEclipse2014部署maven web项目失败
- 微服务架构(Microservice Architect Pattern)综述——什么是微服务架构(读书笔记)
- iOS 开发 xcode中的project.pbxproj--深入剖析
- c语言初学---函数的嵌套调用 递归调用
- python网络爬虫(三)
- usaco 2006 Dec【River Hopscotch跳石头】