当前位置:网站首页>(1), the sequential storage structure of linear table chain storage structure
(1), the sequential storage structure of linear table chain storage structure
2022-08-04 17:02:00 【Little Monk Hanshui Temple Wuxin】
一、前言
This book combines Cheng Jie's《大话数据结构》learning from a book.I have forgotten a lot of the data structure knowledge I learned before,Reread it recently.No theoretical knowledge is involved,Mainly code implementation.
二、线性表
线性表:0个或多个数据元素的有限序列.
线性表的抽象数据类型:顺序存储结构、链式存储结构
A sequential storage structure for a linear list,指的是用一段地址连续的存储单元依次存储线性表的数据元素.
三、线性表的顺序存储结构
线性表的顺序存储代码:
#define MAXSIZE 20
typedef char ElemType;
typedef struct{
ElemType data[MAXSIZE];
int length;
}SqList;
#define OK 1
#define ERROR 0
typedef int Status;
//获取元素
Status GetElem(SqList L, int i, ElemType *e)
{
if(L.length <= 0)
return ERROR;
if((i <= 0) || (i > L.length))
return ERROR;
*e = L.data[i-1];
return OK;
}
//插入
Status ListInsert(SqList *L, int i; ElemType e)
{
int k;
if(!L || (i <= 0) || (i>L->length +1))
return ERROR;
if(L->length == MAXSIZE)
return ERROR;
for(k = L->length - 1; k >= i-1; k--)
{
L->data[k+1] = L->data[k];
}
L->data[i-1] = e;
L->length++;
return OK;
}
//删除
Status ListDelete(SqList *L, int i, ElemType *e)
{
int k;
if(!L || (i<1) || (i>L->length))
{
return ERROR;
}
*e = L->data[i-1];
for(k = i-1; k < L->length - 1; k++)
{
L->data[k] = L->data[k+1];
}
L->length--;
return OK;
}
四、线性表的链式存储结构
#define OK 1
#define ERROR 0
typedef int ElemType;
typedef struct Node{
ElemType data;
struct Node *next;
}Node;
typedef struct Node *LinkList;
#include <stdio.h>
#include "linklist.h"
//获取第iThe data field value of a node
Status GetElem(LinkList L, int i, ElemType *e)
{
int j;
LinkList p;
p = L->next;
if(i<1)
return ERROR;
j = 1;
while(p && j <i)
{
p = p->next;
j++;
}
if(!p)
return ERROR;
*e = p->data;
return OK;
}
Status ListInsert(LinkList *L, int i, ElemType e)
{
int j = 1;
LinkList p, s;
p = *L;
if(!L || i < 0)
return ERROR;
while(p || j < i)
{
p = p->next;
j++;
}
if(!p)
return ERROR;
s = (LinkList)malloc(sizeof(Node))
s->data = e;
s->next = p->next;
p-next = s;
return OK;
}
Status ListDelete(LinkList *L, int i, ElemType *e)
{
int j = 1;
LinkList p, q;
p = *L;
if(!L || i < 1)
return ERROR;
while(p->next || j < i)
{
p = p->next;
j++;
}
if(!p->next)
return ERROR;
q = p->next;
p->nex = q->next;
*e = q->data;
free(q);
return OK;
}
边栏推荐
- 学习探索-给字体设置前景色
- Minecraft HMCL 使用认证服务器LittleSkin进行登录
- 机器学习(十七):网格搜索(Grid Search)和SVM
- 水能自发变成“消毒水”,83岁斯坦福教授:揭示冬天容易得流感的部分原因...
- 15 days to upgrade to fight monsters and become a virtual fashion creator
- 泰坦尼克号沉船数据之美——起于悲剧,止于浪漫
- 移动中兴ZXV10 B860AV2.1-A_S905L2_MT7668_线刷固件包
- mysql学习笔记——利用动态SQL和Session变量实现一个公式或者计算器
- 《分布式云最佳实践》分论坛,8月11日深圳见
- 谷歌开发者社区推荐:《Jetpack Compose 从入门到实战》新书上架,带你踏上 Compose 开发之旅~
猜你喜欢

力拓信创生态,博睿数据多款产品获得东方通与达梦数据库产品兼容互认证明

葫芦娃解析

智慧场馆的功能有哪些

Copycat CNN: Stealing Knowledge by Persuading Confession with Random Non-Labeled Data阅读心得

全球电子产品需求萎靡:三星越南工厂大幅压缩产能,减少工人工作日

Heilongjiang Mobile New Magic Hundred Box M411A_2+8_S905L3A_wire brush firmware package

多线程学习笔记-3.并发容器

适配器模式

"Distributed cloud best practices" BBS, on August 11, shenzhen

泰坦尼克号沉船数据之美——起于悲剧,止于浪漫
随机推荐
【LeetCode每日一题】——540.有序数组中的单一元素
AtCoder Beginner Contest 262 部分题解
多线程学习笔记-3.并发容器
葫芦娃解析
跨链桥已成行业最大安全隐患 为什么和怎么办
水能自发变成“消毒水”,83岁斯坦福教授:揭示冬天容易得流感的部分原因...
18 Data Collection Analysis
软件基础的理论
重新审视分布式系统:永远不会有完美的一致性方案……
Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World。
Qt自动补全之QCompleter使用
LeetCode 0167. 两数之和 II - 输入有序数组
谷粒商城笔记
抖音最重要的接口——item_search_video-根据关键词获取视频列表
小程序+自定义插件的混合模式
学习探索-网站中引入百度统计
容器化 | 在 NFS 备份恢复 RadonDB MySQL 集群数据
码蹄集 - MT2165 - 小码哥的抽卡之旅1
乐享购(分享购)的模式:优势、亮点、收益
美容院管理系统有哪些促销方式?