
顺序表的操作
发布日期:2021-05-09 00:21:29
浏览次数:11
分类:博客文章
本文共 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 }
发表评论
最新留言
感谢大佬
[***.8.128.20]2025年04月13日 06时12分01秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
阿里巴巴Json工具-Fastjson教程
2021-05-09
Spring Cloud Gateway - 快速开始
2021-05-09
Spring Security 实战干货:理解AuthenticationManager
2021-05-09
Java对象转JSON时如何动态的增删改查属性
2021-05-09
Python 面向对象进阶
2021-05-09
Linux常用统计命令之wc
2021-05-09
Git安装及使用以及连接GitHub方法详解
2021-05-09
docker容器与虚拟机的区别
2021-05-09
shell脚本里使用echo输出颜色
2021-05-09
Python2跟Python3的区别
2021-05-09
并发编程——IO模型详解
2021-05-09
Java之封装,继承,多态
2021-05-09
wait()与notify()
2021-05-09
详细总结js中的对象创建模式
2021-05-09
使用js打印时去除页眉页脚
2021-05-09
Hystrix 使用手册 | 官方文档翻译
2021-05-09
Spring security OAuth2.0认证授权学习第二天(基础概念-RBAC)
2021-05-09
UI设计中的软件知识
2021-05-09
ORA-00904: "FILED_TYPE": 标识符无效
2021-05-09
Docker的基本组成
2021-05-09