数据结构经典代码(严蔚敏)

上传人:夏** 文档编号:503189757 上传时间:2023-06-06 格式:DOC 页数:160 大小:463KB
返回 下载 相关 举报
数据结构经典代码(严蔚敏)_第1页
第1页 / 共160页
数据结构经典代码(严蔚敏)_第2页
第2页 / 共160页
数据结构经典代码(严蔚敏)_第3页
第3页 / 共160页
数据结构经典代码(严蔚敏)_第4页
第4页 / 共160页
数据结构经典代码(严蔚敏)_第5页
第5页 / 共160页
点击查看更多>>
资源描述

《数据结构经典代码(严蔚敏)》由会员分享,可在线阅读,更多相关《数据结构经典代码(严蔚敏)(160页珍藏版)》请在金锄头文库上搜索。

1、文档供参考,可复制、编制,期待您的好评与关注! /* 线性表的顺序表示:类型和界面定义*/* 线性表的顺序表示:函数实现*/* 线性表的单链表表示:类型和界面函数定义*/* 线性表的单链表表示:函数实现*/* 线性表的顺序表示:类型和界面定义*/* 线性表的顺序表示:函数实现*/* 用顺序表解决josephus问题的算法*/* 用循环单链表解决josephus问题的算法*/*字符串的顺序表示*/* 字符串的链接表示 */* 顺序栈表示:类型和界面函数声明 */* 顺序栈表示:函数定义 */* 栈链接表示:类型和界面函数声明 */*栈链接表示:函数定义*/* 简化背包问题的递归算法*/* 简化背

2、包问题的非递归算法*/* 迷宫问题的递归算法*/* 迷宫问题的非递归算法(栈实现)*/* 队列的顺序表示:类型和函数声明 */* 队列的顺序表示:函数定义 */*队列链接表示:类型和界面函数声明*/*队列链接表示:函数定义*/* 用队列解决农夫过河问题的算法*/* 树的长子-兄弟表示法*/* 树的父指针表示法*/* 树的子表表示法*/* 树的后根周游的递归算法*/* 树的先根周游的非递归算法*/* 树的中根周游的递归算法*/* 树的后根周游的递归算法*/* 树的广度优先周游算法*/* 二叉树的链接表示*/* 二叉树的顺序表示*/* 线索二叉树的定义,构造算法和中根周游算法*/* 二叉树前根周游

3、的递归算法*/* 二叉树对称根周游的递归算法*/* 二叉树后根周游的递归算法*/* 二叉树后根周游的非递归算法*/* 本程序提供了用顺序表实现字典的存储表示定义*/* 本程序是用开地址法解决碰撞的散列表示方法,提供了字典的一些基本操作*/* 字典的二叉排序树实现,本程序实现了二叉排序树的基本操作的算法*/* 字典的AVL树实现*/* 本程序提供了用顺序表实现字典的情况下的顺序检索算法*/* 本程序提供了用顺序表实现字典的情况下的二分法检索算法*/* 本程序是用开地址法实现散列的检索算法*/* 二叉排序树的检索算法*/* AVL树的检索算法*/* 最佳二叉排序树是具有最佳检索效率的二叉排序树,本

4、程序提供了最佳二叉排序树的构造方法*/* 直接插入排序的算法源程序*/* 二分法插入排序的算法源程序*/* 表插入排序的算法源程序*/* shell排序的算法源程序 */* 直接选择排序的算法源程序*/* 堆排序的算法源程序*/* 起泡排序的算法源程序*/* 快速排序的算法源程序*/* 基数排序的算法源程序*/* 二路归并排序算法的源程序*/* 用图邻接矩阵表示实现的一些基本运算*/* 用图邻接表表示实现的一些基本运算*/* 用邻接矩阵表示的图的广度优先周游算法*/* 用邻接表表示的图的广度优先周游算法*/* 用邻接矩阵表示的图的深度优先周游的递归算法*/* 用邻接矩阵表示的图的深度优先周游的

5、非递归算法*/* 用邻接表表示的图的深度优先周游的非递归算法*/* 用邻接矩阵表示的图的Kruskal算法的源程序*/* 用邻接矩阵表示的图的prim算法的源程序*/* 用邻接矩阵表示的图的Dijkstra算法的源程序*/* 用邻接矩阵表示的图的Floyd算法的源程序*/* 用邻接表表示图的拓扑排序算法*/* 用邻接矩阵表示图的拓扑排序算法*/* 图的关键路径问题的算法*/* 背包问题的贪心法算法*/* 用动态规划法求组和数的算法*/* 用回溯法解决骑士周游问题的算法*/* 0/1背包问题的回溯法算法*/* 0/1背包问题的动态规划法算法*/* 0/1背包问题的分支定界法算法*/* 线性表的顺

6、序表示:类型和界面定义*/#define TRUE 1#define FALSE 0#defineSPECIAL -1/* 定义顺序表的大小。应根据需要修改 */#define MAXNUM 20/* 定义顺序表的元素类型。应根据需要修改 */typedef int DataType;struct SeqList int n;/* 存放线性表中元素的个数 n MAXNUM */ DataType elementMAXNUM;/* 存放线性表中的元素 */;typedef struct SeqList SeqList, *PSeqList;/* 创建新的顺序表 */PSeqList create

7、NullList_seq( void );/* 判断顺序表是否为空 */int isNullList_seq( PSeqList palist );/*在palist所指顺序表中下标为p的元素之前插入元素x*/int insert_seq(PSeqList palist, int p, DataType x);/*在palist所指顺序表中删除下标为的元素*/int delete_seq( PSeqList palist, int p );/*求x在palist所指顺序表中的下标*/int locate_seq(PSeqList palist, DataType x);/* 求palist所指

8、顺序表中下标为p的元素值 */DataType retrieve_seq( PSeqList palist, int p );/* 线性表的顺序表示:函数实现*/#include #include #include slist.hPSeqList createNullList_seq( void ) PSeqList palist = (PSeqList)malloc(sizeof(struct SeqList); if (palist!=NULL) palist-n = 0;/*空表长度为0 */ else printf(Out of space!n); /*存储分配失败*/ return

9、palist;/*在palist所指顺序表中下标为p的元素之前插入元素x*/int insert_seq(PSeqList palist, int p, DataType x) int q; if ( palist-n = MAXNUM ) /* 溢出 */ printf(Seq-list overflow!n); return FALSE; if ( p palist-n ) /* 不存在下标为p的元素 */ printf(Index of seq-list is out of range! n); return FALSE; for(q = palist-n - 1; q = p; q-)

10、 /* 插入位置及之后的元素均后移一个位置 */ palist-elementq+1 = palist-elementq; palist-elementp = x;/* 插入元素x */ palist-n+;/* 元素个数加1 */ return TRUE;/*在palist所指顺序表中删除下标为的元素*/int delete_seq( PSeqList palist, int p ) int q; if (p palist-n-1 ) /* 不存在下标为p的元素 */ printf(Index of seq-list is out of range!n ); return FALSE; fo

11、r(q = p; q n-1; q+) /* 被删除元素之后的元素均前移一个位置 */ palist-elementq = palist-elementq+1; palist-n-;/* 元素个数减1 */ return TRUE;/*求x在palist所指顺序表中的下标*/int locate_seq(PSeqList palist, DataType x) int q; for ( q = 0; qn; q+ ) if (palist-elementq = x) return q; return -1;/* 求palist所指顺序表中下标为p的元素值 */DataType retrieve

12、_seq( PSeqList palist, int p ) if ( p = 0 & p n )/* 存在下标为p的元素 */ return palist-elementp; printf(Index of seq-list is out of range.n ); return SPECIAL; /* 返回一个顺序表中没有的特殊值 */int isNullList_seq( PSeqList palist ) return palist-n = 0;/* 线性表的单链表表示:类型和界面函数定义*/* 定义链接表元素类型。应根据需要定义 */typedef int DataType;stru

13、ct Node; /* 单链表结点类型 */typedef struct Node *PNode; /* 结点指针类型 */typedef struct Node *LinkList; /* 单链表类型 */struct Node /* 单链表结点结构 */ DataType info; PNode link;/* 创建一个带头结点的空链表 */LinkList createNullList_link( void );/* 在llist带头结点的单链表中下标为i的(第i+1个)结点前插入元素x */int insert_link(LinkList llist, int i, DataType x);/* 在llist带有头结点的单链表中删除第一个值为x的结点 */int delete_link( LinkList llist, DataType x );/* 在llist带有头结点的单链表中找第一个值为x的结点存储位置 */

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 国内外标准规范

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号