发新话题
打印

[原创](1)数据结构〈大杂粹〉

栈抽象数据类型的链接存储表示------链式栈

采用链接方式来表示一个栈,便于结点的插入与删除.在程序中同时使用多个栈的情况下

采用链接表示不仅能够提高效率,还可以达到共享存储空间的目的.

这样可以让N个栈共用一个栈空间.

其头指针数组可以用以下方式来表示:

Stack<Type> *s=new Stack<Type> [n];

多多交流.多多关照.

TOP

表达式的计算

表达式

在用高级语言编写的源程序中,一般都含有表达式,如何将它们翻译成能够正确求值的指令序列,是语言处理程序要解决的基本问题.

应用后缀表示计算表达式的值

利用后缀表达式求值时,从左向右顺序地扫描表达式,并使用一个栈暂存扫描到的操作数或计算结果.

在后缀表达式的计算顺序中已经隐含了加括号的优先次序,因而括号在后缀表达式中不出现.

这里只讨论双目操作数,而不考虑单目操作数.

多多交流.多多关照.

TOP

中缀表达式转换为后缀表达式

除了运算器,及计算后缀表达式的值,把中缀表达式转换为后缀表达式的过程也是一个栈应用的典型例子.

在中缀和后缀表达式中的两种表示形式中,操作数的次序是相同的.

因此在扫描中缀表达式,将它转换为后缀表达式的过程中,只要遇到操作数就直接输出.

遇到操作符时,先把它放到(操作符)栈中,待到以后适当的时刻再将栈中的操作符输出.

其中用到ISP和ICP来进行辅助.

ISP为栈内优先数,ICP也叫做栈外优先数.

IN STACK PRIORITY

IN COMING PRIORITY

多多交流.多多关照.

TOP

队列

阶列:FIFO

队列的抽象数据类型

template<class Type> class Queue{

public:

Queue(int=10);

void EnQueue(const Type &item);

Type DeQueue();

Type GetFront();

void MakeEmpty();

int IsEmpty()const;

int IsFull()const;

}

多多交流.多多关照.

TOP

队列的顺序存储表示

队列的存储表示也有两种方式:一种是顺序方式,另一种是链接方式。

[em06]
多多交流.多多关照.

TOP

循环队列

为了能够充分地使用数组中的存储空间,把数组的前端和后端连接起来,形成一个环形的表,即把存储队列元素的表从逻辑上看成一个环,成为循环队列。

循环阶列的首尾相接,当队头指针和队尾指针进到MAXISIZE-1后,再前进一个位置就自动到0,这可以利用除法取余的运算来实现。

用(REAR+1)%MAXSIZE==FRONT来判断是否队已满。即就是说让REAR指到FRONT的前一位置就认为队已满,如图4,9最后一个所示。此时,因队头指针指示实际队头的前一个位置,所以在队列满情形实际空了一个元素位置。如果不留这个空位置,让队尾指针REAR一直存到这个位置。必然有REAR==FRONT,则队列空条件和队列满条件就混淆了。除非另加空/队标志,否则无从分辨到底是队列空,还是队列满。

多多交流.多多关照.

TOP

迷宫程序模型

#include<iostream.h> #include<fstream.h> #include<stdlib.h>

struct Intersection{ int left; int forward; int right; }

class Maze{ private: int MazeSize; int EXIT; Intersection *intsec; public: Maze(char *filename); int TraverseMaze(int CurrentPos); }

Maze::Maze(char *filename) {ifstream fin; fin.open(filename,ios::in|ios::nocreate); if(!fin){ cerr<<"The Maze data file"<<filename<<"cannot be opened!"<<endl; exit(1); } fin>>MazeSize; intsec=new Intersection[MazeSize+1]; for(int i=1;i<=MazeSize;i++) fin>>intsec.left>>intsec.forward>>intsec.right; fin>>EXIT; fin.close(); }

int Maze::TraverseMazeIint currentPos){ if(CurrentPos>0){ if (CurrentPos==EXIT){ cout<<Current Pos<<" ";return 1; } else if(TraverMaze(intsec[CurrentPos].left)) { cout<<CurrentPos<<" ";return 1; } else if(TraverseMaze(intsec[CurrentPos].right)) {cout<<CurrentPos<<" "; return 1; } } return 0; }

多多交流.多多关照.

TOP

第六章习题

写出用广义表表示法表示的树的类声明,并给出如下成员函数的实现:

OPERATOR>>()接收用广义表表示的树作为输入,建立广义表的存储表示:

多多交流.多多关照.

TOP

第8章 图

图的基本概念

有向图

无向图

完全图

网络

邻接顶点

多多交流.多多关照.

TOP

第10章索引结构与散列

  1. 静态索引结构
  2. 线性索引(Linear Index List)
  3. 倒排表
  4. M路静态搜索树
  5. 动态索引结构
  6. B-树
  7. B-树的删除
  8. B+树
  9. TRIE树
  10. 散列
  11. 可扩充散列
多多交流.多多关照.

TOP

发新话题