数据结构算法实现-顺序表基本操作

数据结构算法实现

实现了高一凡的<<数据结构>>,书中的代码是基于VC6++ c++语言实现的,网上也可以找到TC版的c语言实现的源代码,TC版的源代码平台是 Turbo C 2.0 ,编译软件相对较早,因此将采用CodeBlock实现数据涉及的算法原理,在代码顺序和头文件声明,和.c文件实现上有一些顺序上的些许调整:

  • 动态分配创建顺序表
  • 赋值操作
  • 插入操作
  • 打印表的内容
  • 求线性表的长度
  • 将所有在线性表Lb中但不在La中的数据元素插入到La中
  • **

c1.h

可以看做是一个总的用于声明函数类型和定义结构体的头文件,后面大多数实现需要包含c1.h

#include <string.h>
 #include <ctype.h>
 #include <malloc.h> //malloc()等
 #include <limits.h> // INT_MAX等 
 #include <stdio.h> // EOF(=^Z或F6)
 #include <stdlib.h> // atoi()
 #include <io.h> // eof()
 #include <math.h> //floor(),ceil(),abs() 
 #include <process.h> // exit()

 /* 函数结果状态代码 */
 #define TRUE 1
 #define FALSE 0
 #define OK 1
 #define ERROR 0
 #define INFEASIBLE -1
 // #define OVERFLOW -2 因为在math.h中已定义OVERFLOW的值为3,故去掉此行
 typedef int Status; //Status是函数的类型,其值是函数结果状态代码
 //typedef int Boolean; // Boolean是布尔类型,其值是TRUE或FALSE 
 typedef int ElemType;//定义顺序表数据类型为整型

c2_1.h

#ifndef C2_1_H_INCLUDED
#define C2_1_H_INCLUDED

 /* c2-1.h 线性表的动态分配顺序存储结构 */
 #define LIST_INIT_SIZE 10 //线性表存储空间的初始分配量
 #define LIST_INCREMENT 2 // 线性表存储空间的分配增量

 typedef struct _sqlist //定义顺序表的结构
 {
   int *elem; // 存储空间基址
   int length; // 当前长度
   int listsize; // 当前分配的存储容量(以sizeof(ElemType)为单位)
 }SqList;

/*下面是顺序表操作得函数声明,定义函数类型,涉及的参数以及返回值*/

 Status ListEmpty(SqList L);
 int ListLength(SqList L);
 Status GetElem(SqList L,ElemType i,ElemType *e);
 int LocateElem(SqList L,ElemType e,Status(*compare)(ElemType,ElemType));
 Status PriorElem(SqList L,ElemType cur_e,ElemType *pre_e);
 Status NextElem(SqList L,ElemType cur_e,ElemType *next_e);
 void DestroyList(SqList *L);//销毁熟悉怒表
 void ClearList(SqList *L);//清空顺序表
 Status ListInsert(SqList *L,int i,ElemType e); //插入元素
 Status ListDelete(SqList *L,ElemType i,ElemType *e);//删除元素
 void ListTraverse(SqList L,void(*vi)(ElemType*));
 Status equal(
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值