
顺序表的操作
发布日期:2021-05-09 00:21:29
浏览次数:17
分类:博客文章
本文共 2108 字,大约阅读时间需要 7 分钟。
1 //代码来自浙大数据结构的讲义 2 #include3 #include 4 #define MAXSIZE 10 5 6 typedef struct { 7 ElementType Data[MAXSIZE]; 8 int last; //这里的last代表,顺序表最后一个元素的下标,若有n个元素,其值为n-1. MAXSIZE代表表的最大容量. 9 }List; //定义了一种类型10 List L, *ptrL; //这种记法省下了struct11 12 13 //访问下标为i的元素(i从0开始)14 L.Data[i];15 ptrL->Data[i];16 17 18 //////////////////////////////////////////////////////////////////////////19 //主要操作实现20 //////////////////////////////////////////////////////////////////////////21 22 23 //1.初始化,建立空表24 List *MakeEmpty()25 {26 List *ptrL;27 ptrL = (List *)malloc(sizeof(List));// 需要带上(List *),类似于 ptrL = new List[sizeof(List)]; malloc需要加stdlib.h28 ptrL->last = -1; //sizeof判断类型或者变量的长度.29 return ptrL; //相当于该顺序表的入口30 }31 32 //2.查找33 int Find(ElementType X, List *ptrL)34 {35 int i = 0;36 while (i <= ptrL->last && ptrL->Data[i] != X) //必须在数组里且未找到X时,可以i++37 {38 i++;39 }40 if (i > ptrL->last)//说明到最后一位也没有找到x;如果最后一位找到X的话,i不会再增加41 {42 return -1; //代表没找到43 }44 else45 return i;46 }47 48 //3.插入操作 其后的元素先往后移动,后插入 i<= i <= n+1 最后一个元素位置的后一个是n+1处.49 void Insert(ElementType X, int i, List *ptrL)50 {51 if (ptrL->last == MAXSIZE - 1)52 {53 printf("表满");54 return; //要有return55 }56 if (i < 1 || i > ptrL->last + 2)57 {58 printf("位置不合法");59 return;60 }61 for (int j = ptrL->last; j >= i - 1; j--)//j >= i - 1 第i个位置的下标为i-162 {63 ptrL->Data[j + 1] = ptrL->Data[j];64 }65 ptrL->Data[i - 1] = X;66 ptrL->last++; //last仍然要指向最后元素67 return; //这里的return无所谓的.68 }69 70 //4.删除操作 i<= i <= n71 void Delete(int i, List *ptrL)72 {73 if (ptrL->last == 0)74 {75 printf("表为空,无法删除");76 return;77 }78 if (i < 1|| i > ptrL->last + 1)79 {80 printf("位置不合法");81 return;82 }83 for (int j = i - 1; j <= ptrL->last; j++) //第i个位置的下标为i-184 {85 ptrL->Data[j] = ptrL->Data[j + 1]; //ptrL是指向List的指针86 }87 ptrL->last--;88 }
发表评论
最新留言
不错!
[***.144.177.141]2025年04月11日 17时12分12秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
振荡器指标
2019-03-13
libvirtd:内部错误:Failed to apply firewall rule
2019-03-13
优先级队列2
2019-03-13
属性的使用错误
2019-03-13
TiKV 源码解析系列文章(十三)MVCC 数据读取
2019-03-13
1900分图论 : 1183E1 LCA + Kruskal
2019-03-13
(建议收藏)计算机网络:传输层概述、UDP协议与可靠传输协议习题解析与拓展
2019-03-13
Android 开发常用的工具类(更新ing)
2019-03-13
EasyUI的简单介绍
2019-03-13
初次安装webpack之后,提示安装webpack-cli
2019-03-13
Java后端服务明显变慢诊断思路
2019-03-13
java中带参数的try(){}语法——关闭资源
2019-03-13
JSuite 最新版下载试用2021版本
2019-03-14
kafka+storm+hbase整合试验(Wordcount)
2019-03-14
VMware克隆虚拟机后重启network失败
2019-03-14
Hbase压力测试
2019-03-14
StreamReader & StreamWriter
2019-03-14
C#中的类、方法和属性
2019-03-14