数据结构
文章平均质量分 71
LYC_c
得失并不重要,重要的是你要知道你为什么得,清楚你得到了什么;为什么失,明白你失去了什么。。。
展开
-
计算1-1/x+1/x*x
// algo1-1.cpp 计算1-1/x+1/x*x.#include#includevoid main(){timeb t1,t2;long t;double x,sum=1,sum1;int i,j,n;printf("请输入x n:");scanf("%lf%d",&x,&n);ftime(&t1); // 求得当前时间for(i=1;i<=n;i++){su原创 2014-08-08 22:54:57 · 751 阅读 · 0 评论 -
实现算法2.15、2.16的程序(一个数组只生成一个静态链表)
// func2-2.cpp 实现算法2.15、2.16的程序,main2-31.cpp和main2-32.cpp调用int Malloc(SLinkList space) // 算法2.15(见图2.24){ // 若备用链表非空,则返回分配的结点下标(备用链表的第一个结点);否则返回0 int i=space[0].cur; if(i) // 备用链表非空 space[0].cur原创 2014-08-11 23:20:12 · 545 阅读 · 0 评论 -
线性表的静态单链表存储结构
// c2-3.h 线性表的静态单链表存储结构(见图2.23)#define MAX_SIZE 100 // 链表的最大长度typedef struct{ ElemType data; int cur;}component,SLinkList[MAX_SIZE];// algo2-7.cpp 教科书中图2.10静态链表示例// 第1个结点的位置在[0].cur中。成员cur的值为0原创 2014-08-11 23:03:56 · 630 阅读 · 0 评论 -
实现算法2.17的程序
// algo2-8.cpp 实现算法2.17的程序#include"c1.h"#define N 2typedef char ElemType;#include"c2-3.h"#include"func2-2.cpp"#include"bo2-32.cpp"#include"func2-3.cpp" // 包括equal()、comp()、print()、print2()和prin原创 2014-08-11 23:49:24 · 519 阅读 · 0 评论 -
不带头借点的单链表的扩展功能
// func2-1.cpp 不带头结点的单链表(存储结构由c2-2.h定义)的扩展操作(3个)// algo2-6.cpp和bo7-2.cpp用到void InsertAscend(LinkList &L,ElemType e,int(*compare)(ElemType,ElemType)){ // 按关键字非降序将e插入表L。函数compare()返回值为形参1的关键字-形参2的关键字原创 2014-08-11 22:22:01 · 690 阅读 · 0 评论 -
一个数组中可根据需要生成若干个独立的链表
// bo2-32.cpp 一个数组可生成若干静态链表(数据结构由c2-3.h定义)的基本操作(12个),包括算法2.14#define DestroyList ClearList // DestroyList()和ClearList()的操作是一样的void InitSpace(SLinkList L) // 算法2.14。另加(见图2.29){ // 将一维数组L中各分量链成一个备用链表原创 2014-08-11 23:31:24 · 480 阅读 · 0 评论 -
一元多项式的表示及相加(抽象数据类型Polynomial的实现)
// c2-6.h 抽象数据类型Polynomial的实现(见图2.45)typedef struct // 项的表示,多项式的项作为LinkList的数据元素{float coef; // 系数int expn; // 指数}term,ElemType; // 两个类型名:term用于本ADT,ElemType为LinkList的数据对象名原创 2014-08-12 22:02:57 · 1507 阅读 · 0 评论 -
带头结点的线性链表类型
// c2-5.h 带头结点的线性链表类型typedef struct LNode // 结点类型(见图2.40){ElemType data;LNode *next;}*Link,*Position;struct LinkList // 链表类型(见图2.41){Link head,tail; // 分别指向线性链表中的头结点和最后一个结点int len; // 指示线性链表中原创 2014-08-12 21:48:31 · 1079 阅读 · 0 评论 -
循环链表
单链的循环链表结点的存储结构和单链表的存储结构一样,所不同的是:最后一个结点的next 域指向头结点,而不是“空”。这样,由表尾很容易找到表头。但若链表较长,则由表头找到表尾较费时,因而,单循环链表往往设立尾指针而不是头指针,如图231所示。这在两个链表首尾相连合并成一个链表时非常方便。Bo2-4.cpp 是设立尾指针的单循环链表的基本操作。原创 2014-08-12 21:22:17 · 558 阅读 · 0 评论 -
实现算法2.20、2.21的程序
// algo2-11.cpp 实现算法2.20、2.21的程序#include"c1.h"typedef int ElemType;#include"c2-5.h"#include"bo2-6.cpp"#include"func2-3.cpp" // 包括equal()、comp()、print()、print2()和print1()函数Status ListInsert_L(Lin原创 2014-08-12 21:52:05 · 570 阅读 · 0 评论 -
两个仅设表尾指针的循环链表的合并(教科书图2.13)
// algo2-10.cpp 两个仅设表尾指针的循环链表的合并(教科书图2.13)#include"c1.h"typedef int ElemType;#include"c2-2.h"#include"bo2-4.cpp"#include"func2-3.cpp" // 包括equal()、comp()、print()、print2()和print1()函数void MergeLis原创 2014-08-12 21:29:31 · 808 阅读 · 0 评论 -
实现算法2.11、2.12的程序
// algo2-5.cpp 实现算法2.11、2.12的程序#include"c1.h"typedef int ElemType;#include"c2-2.h"#include"bo2-2.cpp"#include"func2-3.cpp" // 包括equal()、comp()、print()、print2()和print1()函数void CreateList(LinkList原创 2014-08-10 23:52:26 · 722 阅读 · 0 评论 -
实现算法2.4的程序
// algo2-4.cpp 修改算法2.7的第一个循环语句中的条件语句为开关语句,且当// *pa=*pb时,只将两者中之一插入Lc。此操作的结果和算法2.1相同#include"c1.h"typedef int ElemType;#include"c2-1.h"#include"bo2-1.cpp"#include"func2-3.cpp" // 包括equal()、comp()、原创 2014-08-09 22:58:52 · 436 阅读 · 0 评论 -
实现算法2.3的程序
// algo2-3.cpp 实现算法2.7的程序#include"c1.h"typedef int ElemType;#include"c2-1.h"#include"bo2-1.cpp"#include"func2-3.cpp" // 包括equal()、comp()、print()、print2()和print1()函数void MergeList(SqList La,SqLis原创 2014-08-09 22:56:30 · 429 阅读 · 0 评论 -
用单链表实现算法2.1
// algo2-12.cpp 用单链表实现算法2.1,仅有4句与algo2-1.cpp不同#include"c1.h"typedef int ElemType;#include"c2-2.h" // 此句与algo2-1.cpp不同(因为采用不同的结构)#include"bo2-2.cpp" // 此句与algo2-1.cpp不同(因为采用不同的结构)#include"func2-3.原创 2014-08-10 23:35:36 · 415 阅读 · 0 评论 -
实现算法2.1的程序
// algo2-1.cpp 实现算法2.1的程序#include"c1.h"typedef int ElemType;#include"c2-1.h" // 采用线性表的动态分配顺序存储结构#include"bo2-1.cpp" // 可以使用bo2-1.cpp中的基本操作#include"func2-3.cpp" // 包括equal()、comp()、print()、print2(原创 2014-08-09 22:50:02 · 446 阅读 · 0 评论 -
用单链表结构实现算法2.2的程序
// algo2-13.cpp 采用单链表结构实现算法2.2的程序,仅有4句与algo2-2.cpp不同#include"c1.h"typedef int ElemType;#include"c2-2.h" // 此句与algo2-2.cpp不同#include"bo2-2.cpp" // 此句与algo2-2.cpp不同#include"func2-3.cpp" // 包括equal(原创 2014-08-10 23:37:06 · 390 阅读 · 0 评论 -
说明exit()函数作用的程序
// algo1-4.cpp 说明exit()函数作用的程序#include"c1.h"int a(int i){if(i==1){printf("退出程序的运行\n");exit(1);}return i;}void main(){int i;printf("请输入i:");scanf("%d",&i);printf("a(i)=%d\n",a(i));}原创 2014-08-08 22:48:26 · 761 阅读 · 0 评论 -
线性表的链式表示和实现
和顺序表相比,链表存储结构在实现插入、删除的操作时,不需要移动大量数据元素(但不容易实现随机存取线性表的第i 个数据元素的操作)。所以,链表适用于经常需要进行插入和删除操作的线性表,如飞机航班的乘客表等。原创 2014-08-10 23:21:11 · 494 阅读 · 0 评论 -
抽象数据类型的表示与实现
各种字符的定义代码如下:原创 2014-08-07 22:06:05 · 833 阅读 · 1 评论 -
线性表的顺序表示和实现
/*顺序表存储结构容易实现随机存取线性表的第i 个数据元素的操作,但在实现插入、删除的操作时要移动大量数据元素,所以,它适用于数据相对稳定的线性表,如职工工资表、学生学籍表等。c2-1.h 是动态分配的顺序表存储结构,bo2-1.cpp 是基于顺序表的基本操作。由于C++函数可重载,故去掉bo2-1.cpp 中算法2.3 等函数名中表示存储类型的后缀_Sq。c2-1.h 不采用固定数组原创 2014-08-09 22:31:32 · 512 阅读 · 0 评论 -
实现算法2.2的程序
// algo2-2.cpp 实现算法2.2的程序#include"c1.h"typedef int ElemType;#include"c2-1.h"#include"bo2-1.cpp"#include"func2-3.cpp" // 包括equal()、comp()、print()、print2()和print1()函数void MergeList(SqList La,SqLis原创 2014-08-09 22:54:16 · 445 阅读 · 0 评论 -
不带头结点的单链表
单链表也可以不设头结点,如图212 所示。显然,基于这种结构的基本操作和带有头结点的线性链表基本操作是不同的。bo2-8.cpp 是不带头结点的线性链表的基本操作。原创 2014-08-11 00:00:21 · 1182 阅读 · 0 评论 -
变量的引用类型和非引用类型的区别
///////////////////////////// author:liyuechao// date:2014.8.8////////////////////////////// algo1-3.cpp 变量的引用类型和非引用类型的区别#includevoid fa(int a) // 在函数中改变a,将不会带回主调函数(主调函数中的a仍是原值){a++;printf("在原创 2014-08-08 22:44:48 · 666 阅读 · 0 评论 -
双向链表
// c2-4.h 线性表的双向链表存储结构(见图2.36)typedef struct DuLNode{ElemType data;DuLNode *prior,*next;}DuLNode,*DuLinkList;原创 2014-08-12 21:37:46 · 608 阅读 · 0 评论