第九周软件工程学习知识总结(《数据结构与算法》)

一.动态数组的有序线性表

 

 

 

 

 

 1.头文件:

 

 

 

 

 

 2.c档

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 3.主程序

 

 

 

 

 

 

 

 

 

 4.运行结果

 

 

 

 

 

 

 

 

二.线性表的链结表表示法

1.线性表可以使用固定数组和变动数组来实现;另外,线性表也可使用链结表来表示。

链结表 (linked list) 就是用「链」连接在一起的多个节点。 节点 (node):包含两个部分数据 (data) 与链 (link),如下图所示

数据可以是一个整数 (integer)、有理数 (rational number)、实数 (real number)、字符串 (string)、或学生记录 (student record) 等。

链的作用就是将两个节点连接在一起。 链是有方向的,从一个节点出发到另一个节点,这个方向可理解为「指向」;也就是说从节点 A 指向节点 B。

如果一个节点的链没有指向另一个节点,则它的链是空的,用 NULL 表示,符号为 或 。

 

节点可以有一个、两个或多个链。

 

 

单链节点可用来设计单链线性表 (single-linked linear list)、栈 (stack)、和队列 (queue)。

双链节点可用来设计双链线性表 (double-linked linear list)、循环双链线性表 (circular double-linked linear list)、和二叉树 (binary tree)。

多键节点可用来设计多叉树 (multi-tree) 和图 (graph) 。

 

 

单链线性表是多个单链节点的数据结构,如下图所示:

 

所有的节点都要连结,不能有断链的节点。

只有一个节点没有链指向它,称为头节点 (head node)、始节点 (starting node)、或第一节点 (first node)。

只有一个节点它的链是空的,称为尾节点 (tail node)、终结点 (ending node)、或最后节点 (last node)。

如果线性表任意两个互相连结的节点,节点1 指向节点2,且节点1的数据小于或等于节点2 的数据,亦即 a0a1a2…an-2an-1,则线性表是一个单链有序线性表 (single-linked ordered linear list)。

 

C 程序语言可使用递归结构 (recursive structure) 定义单链有序线性表的节点 :

typedef int ElemType;

// 定义线性表元素类型为整数

int. typedef struct node {

// 定义链结表节点

ElemType elem;

// 节点数据,整数

struct node* next;

// 节点的链,递归定义。 }

Node;

// 节点型态

typedef Node* Link;

// 节点的链,是节点的指针。

// 有序线性表是一个节点指针,指向链结表的头节点。

typedef Link List; List L;

// 声明一个单链有序线性表。

单链有序线性表基本操作介面:

// 初始化线性表,将 size 设为 0。

void initial(List *);

// 线性表的大小。

int getSize(List); // 取出线性表的第 i 个元素, 返回该元素的值;

// 若 i 大于线性表的元素个数,返回 -1。

ElemType getElem(List, int);

// 搜寻线性表的元素,返回该元素的位置。若成功,返回该元素的位置;

// 否则,返回 -1。

int search(List, ElemType);

// 将一个元素插入线性表适当的位置。若成功,返回该元素的位置;

// 否则,返回 -1

int insert(List *, ElemType);

 

 

 

 

 

// 从线性表删除一个元素。若成功,返回该元素原来的位置;否则,

// 返回 -1。

int delete(List *, ElemType);

// 将线性表清空。

void clear(List *);

// 检查线性表是否為空表。若是空,返回 1;否则,返回 0。

int is_empty(List);

// 打印线性表元素。我们增加这个函数,因为它的必要性。

void printlst(List);

1.头文件

 

 

 

 2.c档

 

 

 

 

 

 

 

 

 

 

 

 

 

 3.主程序

 

 

 

 

 

 

 

 

 

 4.运行结果

 

 三.循环链表

1.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted on 2020-05-31 20:35  angelwlily  阅读(218)  评论(0)    收藏  举报