首先是顺序表的抽象数据类型的定义
// file: sequence.h
#define MAXSIZE 100 // 定义顺序表最大的容量为100
typedef int datatype; //给int 取了个别名叫datatype
typedef struct {
datatype arr[MAXSIZE];
int size;
}sequence;
接下来是它的大部分算法实现,当然我增加了冒泡排序:
// file: sequence.c
#include "sequence.h"
#include <stdio.h>
#include <stdlib.h>
/**
我会遇到这个问题,比如:append(sequence* sequ)和 display(sequence sequ)里面的参数对调下,是否也可以呢,答案是不行的,函数在调用时,会在另外开辟一块空间,如果不传递指针参数的话,函数的调用将是无意义的
**/
/*
顺序表是线性存储,所以下面涉及到的第i个元素或第position位置,i和position取值范围是{0, 1, ..., size-1},当然这只是我理解的一种
*/
// 用C语言实现如下算法,实现如下函数(也叫方法)前,首先最好声明下
----------
void init(sequence* sequ); // 初始化顺序表
void append(sequence* sequ, datatype x); // 往顺序表后部插入值为x的元素
void display(sequence sequ); // 遍历
int isEmpty(sequence sequ);