IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 数据结构笔记----线性表的基础知识 -> 正文阅读

[数据结构与算法]数据结构笔记----线性表的基础知识

1.线性表的基本定义

知识点1线性表:简称表,是n(n>=0)个数据元素的有限序列。L=(a1,a2,a3,……,an)长度:线性表中数据元素的个数称为线性表的长度。 长度等于零的线性表称为空表。
知识点2线性表的逻辑特征:第一个元素无前驱,其余元素有且仅有一个前驱;最后一个元素无后继,其余元素有且仅有一个后继。
知识点3数据最常用的五个运算:插入、删除、修改、查找、排序
知识点4线性表的顺序存储结构寻址公式:loc(ai)=loc(a1)+(i-1)*C

(线性表随机存取结构)定义:

typedef ?struct ? { ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Datatype data[MaxSize]; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? int length; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }seqlist;

2.1顺序表的算法

2.1.1初始化空表 T(n)=O(1)

seqlist * Initlist()
{
 ? seqlist *L;
 ? L->length=0;
 ? return (L);
}

2.1.2初始化非空表 T(n)=O(n)

seqlist *L;
int createlist(seqlist *L,datatype r[],int n)
{ int i; 
 ? if(n>MaxSize) 
 ?  {printf("空间不足"); return 0;}
 ? ?for(i=0;i<n;i++)
 ? ? ? ?L->data[i]=r[i];
 ? ?L->length=n;
 ? ?return 1;
}

2.1.3判定表是否为空 T(n)=O(1)

int empty(seqlist *L)
{
 ? if(L->length==0) return 1;
 ?else return 0;
}

2.1.4求顺序表的长度 T(n)=O(1)

int length(seqlist *L)
{
 ? ?return L->length;
}

2.1.5顺序表遍历 T(n)=O(n)

void printList(seqlist *L)
{
 ? for(i=0;i<L->length;i++)
 ? ? printf("%d",L->data[i]);
}

2.1.6查找i位置的数据元素 T(n)=O(1)

datatype Get(seqlist *L,int i,datatype *ptr)
{
 ? if(i<1||i>L->length)
 ?  { printf("参数异常");return 0;}
 ?else { *prt=L->data[i-1] ?return 1;}
}

2.1.7查找值为x的数据元素 T(n)=O(n)

int ?Locate(Seqlist *L, datatype x)
{
 ? for(i=0;i<L->length;i++)
 ?  {
 ? ? ?if(x==L->data[i]) return (i+1);
 ?  }
 ? return 0;
}

2.1.8插入算法 T(n)=O(n)

int insertlist(seqlist *L,int i,datatype x)
{
 ? ?if(L->length>=Maxsize) 
 ? ? { 
 ? ? ? ?printf("上溢异常!");return 0;}
 ? ?if(i<1||i>L->length+1)
 ? ? {
 ? ? ? ?printf("位置异常!");return 0;}
 ? ?for(j=L->length ;j>=i; j--)
 ? ? {
 ? ? ? L->data[j]=L->data[j-1]
 ? ? ? L->data[i-1]=x;
 ? ? ? L->length++; 
 ? ? ? ?return 1; }
}

2.1.9删除算法 T(n)=O(n)

int deletelist(seqlist *L,int i,datatype *ptr)
{ ? 
 ? ? if(L->length<=0)
 ? ?  {
 ? ? ? ?printf("下溢异常!");return 0;}
 ? ? if(i<1||i>L->length)
 ? ?  {
 ? ? ? ? printf("位置异常!");return 0;}
 ? ? ?*ptr=L->data[i-1];
 ? ? ?for(j=i;j<=L->length-1;j++)
 ? ? ?  {
 ? ? ? ? ?L->data[j-1] =L->data[j]
 ? ? ? ? ?L->length--;
 ? ? ? ? ?return 1;}
}

2.1.10逆置算法 T(n)=O(n)

void reverse(int r[],int n)
{ ?int i;
 ? ?for(i=0;i<n/2,i++)
 ?  {
 ? ? ? ? t=r[i] ;r[i]=r[n-1-i]; r[n-1-i]=t;
 ?  }
} ?

2.1.11循环左移K的位置的算法 T(n)=O(n)

void reverse(int r[],int s,int e)
{ ?int i;
 ? ?for(i=s,j=e;i<j;i++,j--)
 ?  {
 ? ? ? ? t=r[i] ;r[i]=r[j]; r[j]=t;
 ?  }
}
void move(int r[], int n,int k)
{ ? reverse(r[],0,k-1);
 ? ?reverse(r[],k,n-1);
 ? ?reverse(r[],0,n-1);
}

2.1.12奇偶划分 T(n)=O(n);

void divide(int r[],int n)
{
 ? i=0;j=n-1;
 ? while(i<j)
 ? ? { ? 
 ? ? ? while(r[i]%2==1 && i<j) i++;
 ? ? ? while(r[j]%2==0 && i<j) j--;
 ? ? ? if(i<j) 
 ? ? ? ? {
 ? ? ? ? ? t=r[i];r[i]=r[j];r[j]=t;
 ? ? ? ? ? i++;j--
 ? ? ? ?  }
 ? ?  }
}
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-08-06 10:05:03  更:2021-08-06 10:05:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 19:44:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码