博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【数据结构】C语言线性表-顺序表
阅读量:3906 次
发布时间:2019-05-23

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

什么是线性表

线性表是最常用且最简单的一种数据结构。简言之,一个线性表是n个数据元素的有限序列。

线性结构特点

在数据元素的非空有限集合中

  1. 存在唯一的一个被称做“第一个”的数据元素
  2. 存在唯一的一个被称做“最后一个”的数据元素
  3. 除第一个之外,集合中的每个数据元素均只有一个前驱
  4. 除最后一个之外,集合中每个数据元素均只有一个后继

顺序表的实现

顺序表示的是用一组地址连续的存储单元依次存储线性表的数据元素

以下是C++的实现过程
注:C语言不可使用引用

#include 
#include
#define SIZE 5//顺序表大小#define ElemType int//元素数据类型using namespace std;typedef struct List{
ElemType *elem;//存储空间基地址(动态数组) int length;//数组长度 int size;//数组大小}list;//初始化顺序表Lint InitList(list &L);//在顺序L中第i个位置插入NewElem元素int InsertList(list &L,int i,ElemType NewElem);//删除顺序表L中第i个位置上的元素,并将其值保存到常量DelElemint DeleteList(List &L,int i,ElemType &DelElem);//修改顺序表L中第i个位置元素为NewElem元素int AmendList(list &L,int i,ElemType NewElem);//查询顺序表L中元素e的位置(返回查询位置)int SelectList(list L,ElemType e);//遍历顺序表void Display(list L);int main(){
list L; ElemType DelElem; InitList(L); cout<<"定义初始值:"<
L.length+1){
cout<<"插入位置不合法"<
= L.size){
//使用新变量分配空间用来if判断是否分配成功,很多人使用的L.elem = (ElemType*)realloc...,即便判断也是为真 ElemType *newbase = (ElemType*)realloc(L.elem, (L.size+1)*sizeof(ElemType)); if(!newbase){
printf("内存分配失败\n"); exit(-1); } L.elem = newbase;//新基址 L.size++; } //为插入变量,元素后移 for(int p=L.length-1; p>=i-1; p--){
L.elem[p+1] = L.elem[p]; } L.elem[i-1] = NewElem; L.length++; return 1;}//在顺序表L中删除第i个元素,并返回其值eint DeleteList(List &L,int i,ElemType &e){
if(i<1 || i>L.length){
cout<<"删除位置不合法!"<
L.length){
cout<<"更改的位置有误!"<

运行结果:

定义初始值:1 2 3 4 5 在第2个位置插入元素35:1 35 2 3 4 5 删除第3个元素的值为:21 35 3 4 5 更改第五个位置的元素为33:1 35 3 4 33 查询元素3的位置:3

转载地址:http://tnqen.baihongyu.com/

你可能感兴趣的文章
Java线程:创建与启动
查看>>
Java线程:线程状态的转换
查看>>
Java线程:并发协作-死锁
查看>>
Java线程:新特征-线程池
查看>>
interface与abstract class区别
查看>>
axis2创建web service1
查看>>
axis2创建web service2
查看>>
axis2创建web service(三)
查看>>
axis2创建web service(四)
查看>>
Apache Axis2 环境搭配详解
查看>>
Axis2介绍
查看>>
全面接触java集合框架
查看>>
JAVA集合小结
查看>>
Java中的集合
查看>>
SOA、网格计算、云计算与P2P技术
查看>>
Junit4 标注总结
查看>>
Spring事务配置的五种方式
查看>>
关系型数据库性能优化总结
查看>>
IBM MQ 学习笔记
查看>>
MB与MQ简介
查看>>