好文档 - 专业文书写作范文服务资料分享网站

数据结构C语言算法大全

天下 分享 时间: 加入收藏 我要投稿 点赞

return OK; }

Status DeQueue (SqQueue &Q, ElemType &e) { // 若队列不空,则删除Q的队头元素, // 用e返回其值,并返回OK; 否则返回ERROR if (Q.front == Q.rear) return ERROR; e = Q.base[Q.front];

Q.front = (Q.front+1) % MAXQSIZE; return OK; }

经典算法:

1.行编辑

while (ch != EOF) { //EOF为全文结束符 while (ch != EOF && ch != '\\n') { switch (ch) {

case '#' : Pop(S, c); break;

case '@': ClearStack(S); break;// 重置S为空栈 default : Push(S, ch); break; }

ch = getchar(); // 从终端接收下一个字符

} 2.

从原表达式求得后缀式的规律为: 1) 设立操作数栈;

2) 设表达式的结束符为“#”, 予设运算符栈的栈底为“#”; 3) 若当前字符是操作数, 则直接发送给后缀式。

4) 若当前运算符的优先数高于栈顶 运算符,则进栈;

5) 否则,退出栈顶运算符发送给后 缀式;

6) “(” 对它之前后的运算符起隔离 作用,“)”可视为自相应左括弧开始 的表达式的结束符。 算法:

void transform(char suffix[ ], char exp[ ] ) { InitStack(S); Push(S, p = exp; ch = *p; while (!StackEmpty(S)) {

#);

if (!IN(ch, OP)) Pass( Suffix, ch); else { }

if ( ch!= # ) { p++; ch = *p; } else { Pop(S, ch); Pass(Suffix, ch); } } // while } // CrtExptree … … switch (ch) { case case

( : Push(S, ch); break; ) : Pop(S, c);

( )

while (c!=

{ Pass( Suffix, c); Pop(S, c) } break; defult :

while(Gettop(S, c) && ( precede(c,ch))) { Pass( Suffix, c); Pop(S, c); } if ( ch!= # ) Push( S, ch); break; } // switch 3.汉诺塔

void hanoi (int n, char x, char y, char z) {

// 将塔座x上按直径由小到大且至上而下编号为1至n

// 的n个圆盘按规则搬到塔座z上,y可用作辅助塔座。 1 if (n==1)

2 move(x, 1, z); // 将编号为1的圆盘从x移到z 3 else {

4 hanoi(n-1, x, z, y); // 将x上编号为1至n-1的 //圆盘移到y, z作辅助塔

5 move(x, n, z); // 将编号为n的圆盘从x移到z 6 hanoi(n-1, y, x, z); // 将y上编号为1至n-1的 //圆盘移到z, x作辅助塔 7 } 8 }

树:

二叉树的顺序存储:

#define MAX_TREE_SIZE 100 // 二叉树的最大结点数 typedef TElemType SqBiTree[MAX_ TREE_SIZE]; // 0号单元存储根结点 SqBiTree bt;

二叉树的二叉链表存储:

typedef struct BiTNode { // 结点结构 TElemType data;

struct BiTNode *lchild, *rchild;

// 左右孩子指针 } BiTNode, *BiTree;

二叉树的三叉链表存储:

typedef struct TriTNode { // 结点结构 TElemType data;

struct TriTNode *lchild, *rchild; // 左右孩子指针

struct TriTNode *parent; //双亲指针 } TriTNode, *TriTree;

二叉树的双亲链表存储:

typedef struct BPTNode { // 结点结构 TElemType data;

int *parent; // 指向双亲的指针 char LRTag; // 左、右孩子标志域 } BPTNode

树的结构:

typedef struct BPTree{ // 树结构 BPTNode nodes[MAX_TREE_SIZE]; int num_node; // 结点数目

数据结构C语言算法大全

returnOK;}StatusDeQueue(SqQueue&Q,ElemType&e){//若队列不空,则删除Q的队头元素,//用e返回其值,并返回OK;否则返回ERRORif(Q.front==Q.rear)returnERROR;e=Q.base[Q.front];Q.front=(Q.front+1)
推荐度:
点击下载文档文档为doc格式
61tyy4hjs69kfa2517te4mn0g1mmhw00jna
领取福利

微信扫码领取福利

微信扫码分享