当前位置: 首页 > news >正文

数据结构代码整理

一、线性表

1. 数组

(1)初始化

创建结构体,包括数组元素和数组长度

struct LNode{ElementType Data[MAXSIZE];int Last;
};

创建一个空链表,先分配内存,再将指针指向最后一个

List MakeEmpty()
{List PtrL;PtrL = (List)malloc(sizeof(struct LNode));PtrL->Last = -1;return PtrL;}

完整代码,别忘了调用<stdlib.h>库

#include<stdio.h>
#include<stdlib.h>
typedef struct LNode * List;
typedef int ElementType;
#define MAXSIZE 100struct LNode{ElementType Data[MAXSIZE];int Last;
};List MakeEmpty()
{List PtrL;PtrL = (List)malloc(sizeof(struct LNode));PtrL->Last = -1;return PtrL;}int main()
{List list = MakeEmpty();free(list);return 0;
}

(2)查找

int find(ElementType X,List PtrL)
{int i = 0;while(i<PtrL->Last&&PtrL->Data[i] != X)i++;if (i>PtrL->Last)     return -1;else return i;}

(3)插入

将数字插入第 i 个位置

void insert(ElementType X,int i,List PtrL)
{int j;if (PtrL->Last ==MAXSIZE-1){print("表满");}else if(i<1||i>Ptrl->Last+2){print("插入位置不符合要求")}for(j=Ptrl->Last;j>i-1;j--){PtrL->Data[j+1] = PtrL->Data[j]}PtrL->Data[i-1] = X;PtrL->Last++;return;
}

(4)删除

void Delet(int i,List PtrL)
{if (PtrL->i<1||PtrL->Last+1){printf("删除不合法"); return;}int j;for (j=i;j<PtrL->Last;j++){PtrL->Data[j-1] = PtrL->Data[j];}PtrL->Last--;return;
}

2. 链表

(1)链表存储

typedef struct LNode * List;
struct LNode{ElementType Data;List Next; 
}; 
List PtrL;
struct LNode L;

(2)求表长

int Length(List PtrL)
{int j = 0;List P = PtrL;while(P){P = P->Next;j++;}return j;
} 

(3)按序查找

输入长为k,地址为PtrL的链表,返回查找值的地址

List Findth(int k,List PtrL)
{List P = PtrL;int j = 0;while(P != NULL && j <k){P = P->Next;j++;}if (j == k) return P;else return NULL; 
}

(4)按值查找

List Find(ElementType DataX,List PtrL)
{List P = PtrL;while(P->Data != DataX && P != NULL){P = P->Next;} if (P->Data == DataX)  return P;else if   return NULL;
}

(5)插入

List insert(ElemnentType DataX,int i,List PtrL)
{List S,P;if (i==1){S = (List)malloc(sizeof(struct LNode));S->Data = DataX;S->Next = PtrL; return S;}P = Findth(k-1,PtrL);if (P==NULL){printf("插入失败"); }else{S = (List)malloc(sizeof(struct LNode));S->Data = DataX;S->Next = P->Next;P->Next = S;return PtrL;}
}

(6)删除

这个编的不是很好,需要复习

List Delet(int i,List PtrL)
{List S,P;if (i == 1){S = PtrL;if (PtrL != NULL){PtrL = PtrL->Next;}else return NULL;free(S);return PtrL;}P = Findth(k-1,PtrL);if (P!= NULL || P->Next != NULL){S = P->Next;P->Next = S->Next;free(S);return PtrL; 	}}

http://www.dtcms.com/a/394226.html

相关文章:

  • 软件开发测试的W模型:构建高质量产品的坚实蓝图
  • 【OpenGL】LearnOpenGL学习笔记26 - 视差贴图 Parallax Map
  • 对1D poisson采用二阶中心差分格式离散,离散 Laplace 矩阵 A 的特征向量就是 Fourier 模式的离散化
  • [Windows] PDF解密程序 PDF Decrypter Pro 4.5.0 汉化版
  • 【OpenGL】openGL 法线贴图
  • 科普:通配符表达式(Wildcard)与正则表达式(Regular Expression)
  • 【ROS2】Beginner: Client libraries - 使用 colcon 构建功能包
  • 记一次投影连接网络存储
  • 计算机视觉(opencv)实战二十九——图像风格迁移
  • Python数据挖掘之基础分类模型_K最近邻分类器(KNN)_决策树
  • 23种设计模式之【外观模式】-核心原理与 Java实践
  • 第4章:构建自己的物料解决方案
  • 华为昇腾 950 系列芯片深度解析
  • 2025华为杯 C题围岩裂隙精准识别与三维模型重构保姆级教程思路分析【国奖版】
  • 搭建Electron桌面项目
  • Linux 线程之pthread库
  • 内存泄漏、内存溢出与内存访问越界
  • C++初阶(11)string类的模拟实现
  • Python快速入门专业版(三十九):Python集合:去重与集合运算(交集、并集、差集)
  • pytorch 中meshgrid()函数详解
  • 深度探秘GAIA:一个为下一代AI量身打造的挑战性基准
  • 今日分享C++ ---继承
  • TableGPT:浙江大学发布的表格大模型
  • Linux 概述
  • 领码学堂·定时任务新思维[二]——七大替代方案总览:场景、优缺点与快速选型
  • NLP:详解FastText
  • 【力扣】hot100系列(一)哈希部分解析(多解法+时间复杂度分析)
  • 用AI开发HTML双语阅读工具助力英语阅读
  • AI论文速读 | 当大语言模型遇上时间序列:大语言模型能否执行多步时间序列推理与推断
  • 如何使用升腾C92主机搭建本地Linux编译服务器并通过Windows映射访问共享目录