数据结构-顺序表基本操作
这是顺序表基本操作:
#include<stdio.h> #define MaxSize 50 #define ture 1 #define false -1 //静态分配 typedef struct { int data[MaxSize]; int length; }SqList; /* //动态分配 typedef struct { int *data; int MaxSize; int length; }SeqList; */ //初始化顺序表 void InitList(SqList &L) { for (int i = 0; i < MaxSize; i++) L.data[i] = 0;//设初值 L.length = 0; } //求表长 int Length(SqList L) { return L.length; } //增加 bool ListInsert(SqList &L,int i,int e) { if (i<1 || i>L.length + 1)//判断i是否有效 return false; if (L.length >= MaxSize)//判断当前顺序表是否已满 return false; for (int j = L.length; j >= i; j--) {//第i个及以后的往后面移动一个 L.data[j] = L.data[j-1]; } L.data[i - 1] = e; L.length++; return ture; } //删除 bool ListDelete(SqList &L, int i, int &e) { if (i<1 || i>L.length)//判断i是否有效 return false; e = L.data[i - 1]; for (int j = i; j<L.length; j++) {//从前往后删 L.data[j-1] = L.data[j]; } L.length--; return ture; } //按位查找 int GetElem(SqList L,int i) { return L.data[i-1]; } //按值查找 int LocateElem(SqList L, int e) { for (int i = 0; i < L.length; i++) { if (L.data[i] == e) return i + 1; } return false; } //输出线性表 void PrintList(SqList L) { printf("\n"); for (int i = 0; i < L.length; i++) printf("L.data[%d]=%d \n",i,L.data[i]); printf("\n"); } int main() { SqList L; int e=-1; InitList(L);//初始化顺序表 ListInsert(L, 1, 2); ListInsert(L, 2, 5); ListInsert(L, 3, 4); ListInsert(L, 4, 6); PrintList(L);//输出线性表 ListDelete(L, 4, e); printf("e=%d\n", e); PrintList(L);//输出线性表 printf("\n\n线长为:%d\n",Length(L)); //查找第三位 //按位查找 int m=GetElem(L,3); printf("\n第三位为:%d\n",m); int n=LocateElem(L, 4); printf("\n值为4的是第%d位\n", n); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)