‘壹’ 《数据结构(C语言版)》pdf下载在线阅读全文,求百度网盘云资源
《数据结构(C语言版)》(严蔚敏)电子书网盘下载免费在线阅读
链接:
书名:数据结构(C语言版)
作者:严蔚敏
豆瓣评分:6.1
出版社:清华大学出版社
出版年份:2012-5
页数:335
内容简介:
《数据结构》(C语言版)是为“数据结构”课程编写的教材,也可作为学习数据结构及其算法的C程序设计的参数教材。
本书的前半部分从抽象数据类型的角度讨论各种基本类型的数据结构及其应用;后半部分主要讨论查找和排序的各种实现方法及其综合分析比较。其内容和章节编排1992年4月出版的《数据结构》(第二版)基本一致,但在本书中更突出了抽象数据类型的概念。全书采用类C语言作为数据结构和算法的描述语言。
作者简介:
严蔚敏 清华大学计算机系教授,长期从事数据结构教学和教材建设,和吴伟民合作编着的《数据结构》曾获“第二届普通高等学校优秀教材全国特等奖”和“1996年度国家科学技术进步奖三等奖”。
吴伟民 广东工业大学计算机学院副教授,硕士生导师。广东省计算机学会图像图形分会秘书长。长期从事数据结构教学和系列教材建设。主要研究领域:数据结构和算法、可是计算、编译和虚拟机技术、智能系统等。和严蔚敏合作编着的《数据结构》曾获“第二届普通高等学校优秀教材全国特等奖”和“1996年度国家科学技术进步奖三等奖”。
‘贰’ 《2021数据结构考研复习指导》pdf下载在线阅读全文,求百度网盘云资源
《2021数据结构考研复习指导》网络网盘pdf最新全集下载:
链接:https://pan..com/s/1goqdj3H-pw9GiZLO2EdHOg
‘叁’ 《数据结构精讲与习题详解》pdf下载在线阅读全文,求百度网盘云资源
《数据结构精讲与习题详解》网络网盘pdf最新全集下载:
链接:https://pan..com/s/1dHBN4Zlo0s-Sv3wB70qt9w
‘肆’ 求《数据结构与抽象java语言描述第四版》全文免费下载百度网盘资源,谢谢~
《数据结构与抽象java语言描述第四版》网络网盘pdf最新全集下载:
链接:https://pan..com/s/163N0AXhLT3hc2vetn8tzgw
‘伍’ 《数据结构与算法JavaScript描述》pdf下载在线阅读,求百度网盘云资源
《数据结构与算法JavaScript描述》([美] Michael McMillan)电子书网盘下载免费在线阅读
资源链接:
链接:
书名:数据结构与算法JavaScript描述
作者:[美] Michael McMillan
译者:王群锋
豆瓣评分:6.6
出版社:人民邮电出版社
出版年份:2014-8
页数:216
内容简介:
通过本书的学习,读者将能自如地选择最合适的数据结构与算法,并在JavaScript开发中懂得权衡使用。此外,本书也概述了与数据结构与算法相关的JavaScript特性。
本书主要内容如下。
数组和列表:最常用的数据结构。
栈和队列:与列表类似但更复杂的数据结构。
链表:如何通过它们克服数组的不足。
字典:将数据以键-值对的形式存储。
散列:适用于快速查找和检索。
集合:适用于存储只出现一次的元素。
二叉树:以层级的形式存储数据。
图和图算法:网络建模的理想选择。
算法:包括排序或搜索数据的算法。
高级算法:动态规划和贪心算法。
作者简介:
作者简介:
Michael McMillan
作为大学老师和程序员,曾编写过多部受到好评的数据结构与算法图书,包括Data Structures and Algorithms Using C#、Data Structures and Algorithms Using Visual Basic.NET,以及其他计算机教程,如Object-Oriented Programming with Visual Basic.NET、C++ Programming: An Introction、Java Programming Tutorial、Perl from the Ground Up等。Michael现在阿肯色州北小石城普瓦斯基技术学院当讲师,教授计算机信息系统。他还是北小石城阿肯色大学的兼职讲师,教授信息科学。在做讲师之前,他曾是阿肯色儿童医院的一名程序设计师/分析师,负责统计计算和数据分析。
译者简介:
王群锋
1981年生于陕西省富平县桥西大队三里村,2004年毕业于西安电子科技大学。毕业后当了一名程序员,现居西安,在IBM西安研发中心从事下一代统计预测软件的开发工作。
杜欢
淘宝网高级技术专家,2012年加入淘宝,曾就职于雅虎台湾及CISCO。对前端架构、前后端协作有自己的见解,专注于Web产品设计、可用性实施,热爱标准化。
‘陆’ 求《Java软件结构与数据结构第四版》全文免费下载百度网盘资源,谢谢~
《Java软件结构与数据结构第四版》网络网盘pdf最新全集下载:
链接: https://pan..com/s/1le4V212cM7vrf7VbRGBhlg
‘柒’ 求数据结构C语言版严蔚敏(第四版)pdf 图上这本
展开所有强烈建议购买外国版本。数据结构(c 语言版本)由霍洛维茨等人翻译出版社: 中国机器出版社传统的内容和组织这类教材。层次分明,代码质量高。作者的教学经历,可以从该书的总体叙述中看出来。虽然有一定的难度,但作者从头到尾,都是从相关的基础知识,一步一步来的。(例如,c 的数据存储?),这是远远好于严伟民的。最重要的是,与严的教科书相比,书中的证明非常简洁。严的教科书是一场噩梦(例如,严的关于模式匹配的书)。
‘捌’ 求JAVA.数据结构.算法学习视频百度云。
《数据结构课程精讲教案合集-复旦大学(共计1061页).pdf 》网络网盘免费资源下载
链接: https://pan..com/s/15uwjtHgKKzZdheWFQC21pQ
‘玖’ 《数据结构与抽象java语言描述第四版》pdf下载在线阅读全文,求百度网盘云资源
《数据结构与抽象java语言描述第四版》网络网盘pdf最新全集下载:
链接:https://pan..com/s/163N0AXhLT3hc2vetn8tzgw
‘拾’ 数据结构从应用到实现java
有一些源码但愿对你有用
可惜我不能传。。复制给你吧
import java.util.Scanner;
class DATA
{
String key; //结点的关键字
String name;
int age;
}
class SLType //定义顺序表结构
{
static final int MAXLEN=100;
DATA[] ListData=new DATA[MAXLEN+1]; //保存顺序表的结构数组
int ListLen; //顺序表已存结点的数量
void SLInit(SLType SL) //初始化顺序表
{
SL.ListLen=0; //初始化为空表
}
int SLLength(SLType SL)
{
return (SL.ListLen); //返回顺序表的元素数量
}
int SLInsert(SLType SL,int n,DATA data)
{
int i;
if(SL.ListLen>=MAXLEN) //顺序表结点数量已超过最大数量
{
System.out.print("顺序表已满,不能插入结点!\n");
return 0; //返回0表示插入不成功
}
if(n<1 || n>SL.ListLen-1) //插入结点序号不正确
{
System.out.print("插入元素序号错误,不能插入元素!\n");
return 0; //返回0,表示插入不成功
}
for(i=SL.ListLen;i>=n;i--) //将顺序表中的数据向后移动
{
SL.ListData[i+1]=SL.ListData[i];
}
SL.ListData[n]=data; //插入结点
SL.ListLen++; //顺序表结点数量增加1
return 1; //成功插入,返回1
}
int SLAdd(SLType SL,DATA data) //增加元素到顺序表尾部
{
if(SL.ListLen>=MAXLEN) //顺序表已满
{
System.out.print("顺序表已满,不能再添加结点了!\n");
return 0;
}
SL.ListData[++SL.ListLen]=data;
return 1;
}
int SLDelete(SLType SL,int n) //删除顺序表中的数据元素
{
int i;
if(n<1 || n>SL.ListLen+1) //删除结点序号不正确
{
System.out.print("删除结点序号错误,不能删除结点!\n");
return 0; //删除不成功,返回0
}
for(i=n;i<SL.ListLen;i++) //将顺序表中的数据向前移动
{
SL.ListData[i]=SL.ListData[i+1];
}
SL.ListLen--; //顺序表元素数量减1
return 1; //成功删除,返回1
}
DATA SLFindByNum(SLType SL,int n) //根据序号返回数据元素
{
if(n<1 || n>SL.ListLen+1) //元素序号不正确
{
System.out.print("结点序号错误,不能返回结点!\n");
return null; //不成功,则返回0
}
return SL.ListData[n];
}
int SLFindByCont(SLType SL,String key) //按关键字查询结点
{
int i;
for(i=1;i<=SL.ListLen;i++)
{
if(SL.ListData[i].key.compareTo(key)==0) //如果找到所需结点
{
return i; //返回结点序号
}
}
return 0; //搜索整个表后仍没有找到,则返回0
}
int SLAll(SLType SL) //显示顺序表中的所有结点
{
int i;
for(i=1;i<=SL.ListLen;i++)
{
System.out.printf("(%s,%s,%d)\n",SL.ListData[i].key,SL.ListData[i].name,SL.ListData[i].age);
}
return 0;
}
}
public class P2_1 {
public static void main(String[] args) {
int i;
SLType SL=new SLType(); //定义顺序表变量
// DATA data=new DATA(); //定义结点保存数据类型变量
DATA pdata; //定义结点保存指针变量
String key; //保存关键字
System.out.print("顺序表操作演示!\n");
SL.SLInit(SL); //初始化顺序表
System.out.print("初始化顺序表完成!\n");
Scanner input=new Scanner(System.in);
do
{ //循环添加结点数据
System.out.print("输入添加的结点(学号 姓名 年龄):");
DATA data=new DATA();
data.key=input.next();
data.name=input.next();
data.age=input.nextInt();
if(data.age!=0) //若年龄不为0
{
if(SL.SLAdd(SL,data)==0) //若添加结点失败
{
break; //退出死循环
}
}
else //若年龄为0
{
break; //退出死循环
}
}while(true);
System.out.print("\n顺序表中的结点顺序为:\n");
SL.SLAll(SL); //显示所有结点数据
System.out.print("\n要取出结点的序号:");
i=input.nextInt(); //输入结占点序号
pdata=SL.SLFindByNum(SL,i); //按序号查找结点
if(pdata!=null) //若返回的结点指针不为NULL
{
System.out.printf("第%d个结点为:(%s,%s,%d)\n",i,pdata.key,pdata.name,pdata.age);
}
System.out.print("\n要查找结点的关键字:");
key=input.next(); //输入关键字
i=SL.SLFindByCont(SL,key); //按关键字查找 ,返回结点序号
pdata=SL.SLFindByNum(SL,i); //按序号查询,返回结点指针
if(pdata!=null) //若结点指针不为NULL
{
System.out.printf("第%d个结点为:(%s,%s,%d)\n",i,pdata.key,pdata.name,pdata.age);
}
}
}
//2.
import java.util.Scanner;
class DATA2
{
String key; //结点的关键字
String name;
int age;
}
class CLType //定义链表结构
{
DATA2 nodeData=new DATA2();
CLType nextNode;
CLType CLAddEnd(CLType head,DATA2 nodeData) //追加结点
{
CLType node,htemp;
if((node=new CLType())==null)
{
System.out.print("申请内存失败!\n");
return null; //分配内存失败
}
else
{
node.nodeData=nodeData; //保存数据
node.nextNode=null; //设置结点指针为空,即为表尾
if(head==null) //头指针
{
head=node;
return head;
}
htemp=head;
while(htemp.nextNode!=null) //查找链表的末尾
{
htemp=htemp.nextNode;
}
htemp.nextNode=node;
return head;
}
}
CLType CLAddFirst(CLType head,DATA2 nodeData)
{
CLType node;
if((node=new CLType())==null)
{
System.out.print("申请内存失败!\n");
return null; //分配内存失败
}
else
{
node.nodeData=nodeData; //保存数据
node.nextNode=head; //指向头指针所指结点
head=node; //头指针指向新增结点
return head;
}
}
CLType CLFindNode(CLType head,String key) //查找结点
{
CLType htemp;
htemp=head; //保存链表头指针
while(htemp!=null) //若结点有效,则进行查找
{
if(htemp.nodeData.key.compareTo(key)==0) //若结点关键字与传入关键字相同
{
return htemp; //返回该结点指针
}
htemp=htemp.nextNode; //处理下一结点
}
return null; //返回空指针
}
CLType CLInsertNode(CLType head,String findkey,DATA2 nodeData) //插入结点
{
CLType node,nodetemp;
if((node=new CLType())==null) //分配保存结点的内容
{
System.out.print("申请内存失败!\n");
return null; //分配内存失败
}
node.nodeData=nodeData; //保存结点中的数据
nodetemp=CLFindNode(head,findkey);
if(nodetemp!=null) //若找到要插入的结点
{
node.nextNode=nodetemp.nextNode; //新插入结点指向关键结点的下一结点
nodetemp.nextNode=node; //设置关键结点指向新插入结点
}
else
{
System.out.print("未找到正确的插入位置!\n");
// free(node); //释放内存
}
return head; //返回头指针
}
int CLDeleteNode(CLType head,String key)
{
CLType node,htemp; //node保存删除结点的前一结点
htemp=head;
node=head;
while(htemp!=null)
{
if(htemp.nodeData.key.compareTo(key)==0) //找到关键字,执行删除操作
{
node.nextNode=htemp.nextNode; //使前一结点指向当前结点的下一结点
// free(htemp); //释放内存
return 1;
}
else
{
node=htemp; //指向当前结点
htemp=htemp.nextNode; //指向下一结点
}
}
return 0; //未删除
}
int CLLength(CLType head) //计算链表长度
{
CLType htemp;
int Len=0;
htemp=head;
while(htemp!=null) //遍历整个链表
{
Len++; //累加结点数量
htemp=htemp.nextNode; //处理下一结点
}
return Len; //返回结点数量
}
void CLAllNode(CLType head) //遍历链表
{
CLType htemp;
DATA2 nodeData;
htemp=head;
System.out.printf("当前链表共有%d个结点。链表所有数据如下:\n",CLLength(head));
while(htemp!=null) //循环处理链表每个结点
{
nodeData=htemp.nodeData; //获取结点数据
System.out.printf("结点(%s,%s,%d)\n",nodeData.key,nodeData.name,nodeData.age);
htemp=htemp.nextNode; //处理下一结点
}
}
}
public class P2_2 {
public static void main(String[] args) {
CLType node, head=null;
CLType CL=new CLType();
String key,findkey;
Scanner input=new Scanner(System.in);
System.out.print("链表测试。先输入链表中的数据,格式为:关键字 姓名 年龄\n");
do
{
DATA2 nodeData=new DATA2();
nodeData.key=input.next();
if(nodeData.key.equals("0"))
{
break; //若输入0,则退出
}
else
{
nodeData.name=input.next();
nodeData.age=input.nextInt();
head=CL.CLAddEnd(head,nodeData);//在链表尾部添加结点
}
}while(true);
CL.CLAllNode(head); //显示所有结点
System.out.printf("\n演示插入结点,输入插入位置的关键字:") ;
findkey=input.next(); //输入插入位置关键字
System.out.print("输入插入结点的数据(关键字 姓名 年龄):");
DATA2 nodeData=new DATA2();
nodeData.key=input.next();
nodeData.name=input.next();
nodeData.age=input.nextInt();//输入插入结点数据
head=CL.CLInsertNode(head,findkey,nodeData); //调用插入函数
CL.CLAllNode(head); //显示所有结点
System.out.print("\n演示删除结点,输入要删除的关键字:");
key=input.next(); //输入删除结点关键字
CL.CLDeleteNode(head,key); //调用删除结点函数
CL.CLAllNode(head); //显示所有结点
System.out.printf("\n演示在链表中查找,输入查找关键字:");
key=input.next(); //输入查找关键字
node=CL.CLFindNode(head,key); //调用查找函数,返回结点指针
if(node!=null) //若返回结点指针有效
{
nodeData=node.nodeData; //获取结点的数据
System.out.printf("关键字%s对应的结点为(%s,%s,%d)\n" ,key,nodeData.key,nodeData.name,nodeData.age);
}
else //若结点指针无效
{
System.out.printf("在链表中未找到关键字为%s的结点!\n",key);
}
}
}