您的位置:首页 > 编程语言 > PHP开发

链栈的多进制应用

2011-08-02 20:22 253 查看
此程序应用上个程序改造编写的。

#include <iostream>
using namespace std;
#include <stdlib.h>
#define ERROR 0
#define OK    1

typedef struct Nlink {	                //栈的链式结构
int data;			//数据域
Nlink *top;			//出栈
Nlink *base;		        //进栈
}Nlink,*linklist;

bool init_link(linklist &L) {				//栈的初始化
L = (linklist)malloc(sizeof(Nlink));
if(!L) return ERROR;

L ->base = NULL;				//栈顶和栈底指向NULL值
L ->top = L ->base;
return OK;
}

bool push_link(linklist &L,int elem) {			//入栈函数
linklist T;
T = (linklist)malloc(sizeof(Nlink));	        //运用逆向建表方式,进行压栈
if(!T) return ERROR;
T ->data = elem;
T ->top = L;
L = T;
return OK;
}

void pop_link(linklist L) {				//出栈函数
while (L ->top != L->base) {
cout << L ->data;
L = L ->top;
}
}

bool base_output(linklist &L) {
int num,base;
cout << "input num and base :" <<endl;
cin >> num >> base;

do {
push_link(L,num % base);
num /= base;
}while(num !=0);
return OK;
}

bool main() {
linklist P;
init_link(P);
base_output(P);
pop_link(P);

free(P);
while(OK);
return OK;
}


 

结果图:



总结:刚刚开始写的时候,我在push函数写进制转换,感觉很奇怪;

然后参考一些程序,进制函数要独立写的,我想起一个函数的内聚度,

就是一个函数完成一个功能,这样函数利用率大,结构分明。

 

原来求进制这么简单。只需三行就可以。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  output struct input null