数据结构(C语言)第1章

main.c

 1 #include "ch_1.h"
 2
 3 int main()
 4 {
 5     Triplet p;
 6     Status i;
 7     ElemType m;
 8     i = InitList(&p,1,2,3);
 9     printf("InitList: %d,%d,%d\n", p[0],p[1],p[2]);
10
11     i = Get(p, 2, &m);
12     if (i == OK)
13         printf("%d\n", m);
14
15     Put(p, 2, 3);
16     if (i == OK)
17         printf("%d,%d,%d\n", p[0], p[1], p[2]);
18
19     i = IsAscending(p);
20     printf("yes:1 no: 0  %d\n", i);
21
22     i = IsDesending(p);
23     printf("yes:1 no: 0     %d\n", i);
24
25     printf("max: %d\n", Max(p, &m));
26
27     DestroyTriplet(&p);
28     return 0;
29 }

ch_1.h

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #define OK 1
 4 #define ERROR 0
 5 #define OVERFLOW -2
 6 typedef int ElemType;
 7 typedef int Status;
 8 typedef ElemType *Triplet;
 9
10 Status InitList(Triplet *T, ElemType v1, ElemType v2, ElemType v3) //构造三元数组
11 {
12     *T = (ElemType*)malloc(3 * sizeof(ElemType));
13     if (!*T)
14         exit(OVERFLOW);
15     (*T)[0] = v1;
16     (*T)[1] = v2;
17     (*T)[2] = v3;
18     return OK;
19 }
20
21 Status Get(Triplet T, int i, ElemType *e)        //用e返回相应的元素值
22 {
23     if (i < 1 || i > 3)
24         return ERROR;
25     *e = T[i - 1];
26     return OK;
27 }
28
29 Status Put(Triplet T, int i, ElemType e)        //改变相应的元素值
30 {
31     if (i < 1 || i > 3)
32         return ERROR;
33     T[i - 1] = e;
34 }
35
36 Status IsAscending(Triplet T) //升序
37 {
38     return((T[0] <= T[1]) && (T[1] <= T[2]));
39 }
40
41 Status IsDesending(Triplet T) //降序
42 {
43     return((T[0] >= T[1]) && (T[1] >= T[2]));
44 }
45
46 Status Max(Triplet T, ElemType *e)
47 {
48     if (T[0] >= T[1])
49     {
50         if (T[0] >= T[2])
51             *e = T[0];
52         else
53             *e = T[2];
54     }
55
56     else
57     {
58         if (T[1] >= T[2])
59             *e = T[1];
60         else
61             *e = T[2];
62     }
63 }
64
65 Status DestroyTriplet(Triplet *T)
66 {
67     free(*T);
68     *T = NULL;
69     return OK;
70 }

运行结果:

InitList: 1,2,3
2
1,3,3
yes:1 no: 0 1
yes:1 no: 0 0
max: 3

时间: 2024-10-14 10:24:30

数据结构(C语言)第1章的相关文章

《数据结构-C语言版》(严蔚敏,吴伟民版)课本源码+习题集解析使用说明

先附上文档归类目录: 课本源码合辑  链接??? <数据结构>课本源码合辑 习题集全解析  链接??? <数据结构题集>习题解析合辑 博主有话说: 01.自学编程,难免思路阻塞,所以从今天起,我(StrayedKing)决定在本博客陆续更新严蔚敏,吴伟民版<数据结构-C语言版>各章节的课本源码和配套习题集答案解析,目的是为了整理数据结构中的知识点,并与网友交流意见,集思广益,共同进步.        ★注★ 左侧随笔分类下用两个栏目:<课本源码>.<习

实现基于数据结构的语言

创建任何 DSL 都应该从定义需要解决的问题开始.这里,我们需要定义一个 DSL 库(有时也称为组合库,combinators library),用于二维图形,这是一个很明显的选择.这个示例演示如何用大量简单的基本图形构建出复杂的结构.在计算机屏幕上的图像本质上就是线条和多边形的集合,尽管显示出来的图形可能极其复杂.这个示例用四个模块表现:第一,清单 12-1,提供创建图片的基本操作(primitives):第二,清单12-2,如何实现解释图片:清单 12-3 和清单 12-4 用示例演示如何使

数据结构C语言实现——线性链表

declaration.h #ifndef DECLARATION_H_INCLUDED #define DECLARATION_H_INCLUDED #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 #define ElemType int typedef ElemType* Triplet; typedef int Status; type

c语言程序设计第一章3

字符数组是C语言中最常用的数组类型.下面我们通过编写一个程序,来说明字符数组以反操作字符数组的函数的用法.该程序读入一组文本行,并把最长的文水行打印出来.该算法的基本框架非常简单: while (还有未处理的行) i f (该行比已处理的最长行还要长) 保存该行 保存该行的长度 打印最长的行 1 #include <stdio.h> 2 #include <stdlib.h> 3 #define MAXLENGTH 100//文本的最大长度 4 int getline(char l

数据结构期末复习第五章数组和广义表

数据结构期末复习第五章 数组和广义表 二维数组A[m][n]按行优先 寻址计算方法,每个数组元素占据d 个地址单元.     设数组的基址为LOC(a11) :LOC(aij)=LOC(a11)+((i-1)*n+j-1)*d     设数组的基址为LOC(a00) :LOC(aij)=LOC(a00)+( i*n+j )*d    二维数组A[m][n]按列优先 寻址计算方法,每个数组元素占据d 个地址单元.     设数组的基址为LOC(a11) :LOC(aij)=LOC(a11)+((j

Swift 1.1语言第7章 函数和闭包

Swift 1.1语言第7章  函数和闭包 在编程中,随着处理问题的越来越复杂,代码量飞速增加.其中,大量的代码往往相互重复或者近似重复.如果不采有效方式加以解决,代码将很难维护.为 了解决这个问题,人们提出了函数这一概念.使用函数可以将特定功能的代码封装,然后在很多的地方进行使用.本章将会讲解函数和闭包的相关内容.本文选自<Swift 1.1语言快速入门> 7.1  函数介绍 函数是执行特定任务的代码块.使用函数会给开发这带来很多的好处.以下总结了其中两点. 1.结构鲜明,便于理解 如果在一

数据结构c语言版串的操作

#include<stdio.h> #include<malloc.h> #include<string.h> //定义字符串的结构体 typedef struct { char *str;//字符串 int maxLength;//最大可以存放字符的长度 int length;//目前的字符长度 }DString; //1.初始化操作 //初始化操作用来建立和存储串的动态数组空间以及给相关的数据域赋值 void Initiate(DString *s,int max,

数据结构——线性表(第二章)

一.基本概念 1.线性表:简称表,是n(n>=0)个具有相同类型的数据元素的有限序列,线性表中数据元素的个数称为线性表的长度.长度为零时称为空表. 2.线性表的顺序存储结构称为顺序表. 3.单链表:单链表是一组任意的存储单元存放线性表的位置,这组存储单元可以连续也可以不连续,甚至可以零散分布在内存中的任意位置. 下面着重介绍有关单链表的操作: #include<iostream> using namespace std; const int maxsize = 10; // 定义单链表的

数据结构C语言实现介绍

刚刚结束的大二上学期学习了数据机构C语言版这门课,在接下来的一个月中准备把课程的代码和知识点总结一下,就有了这个专题:数据结构C语言实现,在这里我将用C语言实现最基本的数据结构以及一些基本的算法,以下是我这个专题的内容: 1. 数据结构及算法简介: 主要介绍数据结构及算法的基础知识,一些基本的概念和术语,以及算法的定义.算法的特性.算法的时间复杂度和空间复杂度 2.顺序表的定义及算法实现: 主要介绍顺序表的定义及特点,实现顺序表的存储结构以及基本操作 3.单链表的定义及算法实现:  主要介绍单链

数据结构与算法分析-第3章

.title { text-align: center; margin-bottom: .2em } .subtitle { text-align: center; font-size: medium; font-weight: bold; margin-top: 0 } .todo { font-family: monospace; color: red } .done { font-family: monospace; color: green } .priority { font-fami