严蔚敏 数据结构代码c语言

2024-02-12 16:36

本文主要是介绍严蔚敏 数据结构代码c语言,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

P20 例2-1,合并线性表(1)

将所有Lb中但不在la中的数据元素插入到La中

void union (List &La,List Lb){//将所有Lb中但不在la中的数据元素插入到La中La_len =ListLength(La);Lb_len =ListLength(Lb);//求线性表的长度for(i=1;i<=Lb_len;i++){GetElem(Lb,i,e);//取线性表b第i个元素赋值给e if(!LocateElem(La,e,equal))//如果线性表a中不存在和e相同的数据元素 ListInsert(La,++La_len,e);//插入操作 } 
}

P21 例2-2 合并线性表(2)

归并La和Lb得到新的线性表Lc, Lc中的数据元素按值非递减排列 

void MergeList (List La,List Lb,List &Lc){//已知线性表La和Lb中的数据元素按值非递减排列 //归并La和Lb得到新的线性表Lc, Lc中的数据元素按值非递减排列 InitList(Lc);i=j=1;k=0;La_len =ListLength(La);Lb_len =ListLength(Lb);//求线性表的长度while((i<=La_len)&&(j<=Lb_len)){//La和lb均非空 GetElem(La,i,ai);//取线性表a第i个元素赋值给ai GetElem(Lb,j,bj);//取线性表b第j个元素赋值给bj if(ai<=bj){ListInsert(Lc,++k,ai);//在线性表lc的第++k个元素之前插入新的元素++i;      }else{ ListInsert(Lc,++k,bj);//++j;}}while(i<=La_len){GetElem(La,i++,ai);ListInsert(Lc,++k,ai);}while(j<=Lb_len){GetElem(Lb,j++,bj);ListInsert(Lc,++k,bj);}}/*如果在主循环结束后,`La` 中还有剩余元素,那么这个循环会将它们全部插入到 `Lc` 中。同样,如果 `Lb` 中还有剩余元素,也会将它们插入到 `Lc` 中时间复杂度=O(LA+LB)*/	

P22   算法2-3线性表初始化定义

#define LIST_INIT_SIZE 100//初始分配量 
#define LISTINCREMENT  10
typedef struct {ElemType *elem;//数组指针 线性表的基地址 int length;//线性表的当前长度, int listsize;//线性表最先分配的存储空间 
}SqList;Status InitList_Sq(SqList &L)
//构造一个线性表L{L.elem = (ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));if(! elem) exit(OVERFLOW);//存储分配失败L.length = 0;//空表的长度为零 ,目的是分配一个预定义大小的数组空间 L.listsize = LIST_INIT_SIZE;return OK; }//初始化 

P24 算法2-4 线性表的插入

Status ListInsert_Sq(SqList &L,int i,ElemType e) {if(i<1||i>L.length+1) return ERROR;  //插入位置不合理 if(L.length>= L.listsize) {//如果列表的长度已经达到了当前分配的内存大小,就会通过 `realloc` 函数重新分配内存。newbase =(ElemType*)realloc(L.elem,(L.list.size+LISTINCREMENT)*sizeof(ElemType));if(!newbase) exit(OVERFLOW);L.elem = newbase;L.listsize +=LISTINCREMENT;//新的内存大小是原来的大小加上一个增量 `LISTINCREMENT`。//如果重新分配内存失败(返回 `NULL`),则程序会退出并标记为 `OVERFLOW`。//如果成功,将新的内存地址赋值给 `L.elem`,并增加 `L.listsize`。}q=&(L.elem[i-1]);//获取插入位置前一个元素的指针 `q`。for(p=&( L.elem[L.length-1] );p>=q ; --p  ) //通过一个循环将从最后一个元素开始到`q`(包括 `q`)的所有元素向后移动一个位置,为插入新元素腾出空间。*(p+1)=*p;*q=e;  //扎入e ++L.length;  //长度+1 return OK;}

p24 算法2-5线性表的删除

Status ListDelete_Sq(SqList &L,int i,ElemType &e){if(i<1||i>L.length) return ERROR;  //删的位置不合理p=&(l.elem[i-1]);//获取要删除元素的指针 `p`e=*p;//将该元素的值赋值给变量 `e`,以便后续使用或存储。q=L.elem+L.length-1;//设置一个指针 `q` 指向列表的最后一个元素。for(++p;p<=q;++p)  *(p-1)=*p; //通过一个循环,将从 `p`(包括 `p`)到 `q` 的所有元素向前移动一个位置,覆盖要删除的元素。--L.length;return OK;}

这篇关于严蔚敏 数据结构代码c语言的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/703055

相关文章

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

Java中Map.Entry()含义及方法使用代码

《Java中Map.Entry()含义及方法使用代码》:本文主要介绍Java中Map.Entry()含义及方法使用的相关资料,Map.Entry是Java中Map的静态内部接口,用于表示键值对,其... 目录前言 Map.Entry作用核心方法常见使用场景1. 遍历 Map 的所有键值对2. 直接修改 Ma

Go语言中泄漏缓冲区的问题解决

《Go语言中泄漏缓冲区的问题解决》缓冲区是一种常见的数据结构,常被用于在不同的并发单元之间传递数据,然而,若缓冲区使用不当,就可能引发泄漏缓冲区问题,本文就来介绍一下问题的解决,感兴趣的可以了解一下... 目录引言泄漏缓冲区的基本概念代码示例:泄漏缓冲区的产生项目场景:Web 服务器中的请求缓冲场景描述代码

Go语言如何判断两张图片的相似度

《Go语言如何判断两张图片的相似度》这篇文章主要为大家详细介绍了Go语言如何中实现判断两张图片的相似度的两种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 在介绍技术细节前,我们先来看看图片对比在哪些场景下可以用得到:图片去重:自动删除重复图片,为存储空间"瘦身"。想象你是一个

Go语言中Recover机制的使用

《Go语言中Recover机制的使用》Go语言的recover机制通过defer函数捕获panic,实现异常恢复与程序稳定性,具有一定的参考价值,感兴趣的可以了解一下... 目录引言Recover 的基本概念基本代码示例简单的 Recover 示例嵌套函数中的 Recover项目场景中的应用Web 服务器中

深入解析 Java Future 类及代码示例

《深入解析JavaFuture类及代码示例》JavaFuture是java.util.concurrent包中用于表示异步计算结果的核心接口,下面给大家介绍JavaFuture类及实例代码,感兴... 目录一、Future 类概述二、核心工作机制代码示例执行流程2. 状态机模型3. 核心方法解析行为总结:三

python获取cmd环境变量值的实现代码

《python获取cmd环境变量值的实现代码》:本文主要介绍在Python中获取命令行(cmd)环境变量的值,可以使用标准库中的os模块,需要的朋友可以参考下... 前言全局说明在执行py过程中,总要使用到系统环境变量一、说明1.1 环境:Windows 11 家庭版 24H2 26100.4061

pandas实现数据concat拼接的示例代码

《pandas实现数据concat拼接的示例代码》pandas.concat用于合并DataFrame或Series,本文主要介绍了pandas实现数据concat拼接的示例代码,具有一定的参考价值,... 目录语法示例:使用pandas.concat合并数据默认的concat:参数axis=0,join=

C#代码实现解析WTGPS和BD数据

《C#代码实现解析WTGPS和BD数据》在现代的导航与定位应用中,准确解析GPS和北斗(BD)等卫星定位数据至关重要,本文将使用C#语言实现解析WTGPS和BD数据,需要的可以了解下... 目录一、代码结构概览1. 核心解析方法2. 位置信息解析3. 经纬度转换方法4. 日期和时间戳解析5. 辅助方法二、L

Python使用Code2flow将代码转化为流程图的操作教程

《Python使用Code2flow将代码转化为流程图的操作教程》Code2flow是一款开源工具,能够将代码自动转换为流程图,该工具对于代码审查、调试和理解大型代码库非常有用,在这篇博客中,我们将深... 目录引言1nVflRA、为什么选择 Code2flow?2、安装 Code2flow3、基本功能演示