求详解
追答typedef char DataType;
typedef struct ListNode
{
DataType d;
ListNode *nxt;
}LNode,*List;
List AllocLNode(){ return (List )malloc(sizeof(LNode));}
void FreeNode(List node){ free(node);}
List CreateNode(DataType d){
List p=AllocDNode()
p->d=d;
return p;
}
List CreateList(){
List head=AllocDNode();
head->next=NULL;
return head;
}
int insertList (List *L,Datatype d){
if(!L)return 0;
List p=CreateNode(d)
if(!p)return 0;
p->nxt =L->next;
L->next =p;
return 1;
}
int deleteList(List *L){
if(isEmptyList(L))return 0;
List *p=L->nxt;
if(p)L->nxt=p->nxt;
delete p;
return 1;
}
void DestoryList(List**L){
if(!L || !(*L))return;
List*p=*L->nxt;
while(p){ *L->nxt=p->nxt; FreeNode(p); }
FreeNode(*L); *L=NULL;
}
int isEmptyList(List *L){ return L==NULL || L->nxt==NULL;}
int getFirstData(List *L,DataType *d) {
if(isEmpty(L))return 0;
*d=L->nxt->d;
return 1;
}
typedef struct ListStack{
List *L;
int num;
}LStack;
void initStack(LStack *s)
{ if(*s)return;
s->L= CreateList();
}
void DestryStack(LStack *s){ DestoryList(s->L); }
int isEmpty(LStack *s){ if(!s)return 1;
return isEmptyList(s->L);
}
void Push(LStack *s,DataType d){ insertList(s->L,d);}
int Pop(LStack *s,DataType *d)
{
if(!s)return 0;
getFirstData(s->L,d) ;
return deleteList(s->L);
}
char* DectoOct(int x,char *o)
{ LStack stack;
int i=0;
initStack(&stack);
do {
Push(&stack,x%8);
x/=8;
}while(x>10);
while(!isEmpty(&stack)) {
Pop(&stack,o+i);
*(o+i) +='0';
i++;
}
*(o+i)='\0';
Destory(&stack);
return o;
}
#include
int main()
{
char oct[100];
int n=247;
printf("10进制 247= 8进制%s ",DectoOct(n,oct));
return 0;
}
已知一个无符号整数number,写一个算法,将其转换为八进制数。要求...
1)实现一个链表 2)把链表做成堆栈 3)实现 NummerToOct C实现的话1)2)全用函数 C++的话全用类
利用栈的基本操作,设计一个算法将一个十进制整数转换成十六进制输出
InitStack(a);while(number!=0){ int k = number%r;Push(a,k);number = number\/r;} while(!EmptyStack(a)){ if(r!=16)cout<<Pop(a);else { int x = Pop(a);if(x<10) cout<<x;else { switch(x)
c语言用栈实现八进制转十进制,完整程序,求解
这个链栈应该就是一个用链表弄的后进先出的栈结构。top指针永远指向栈的最上面的那个节点。这个函数是新加一个节点到这个栈中,首先分配了空间给s,s是要新加入这个栈的那个节点。s->next=top;就是让s指向栈的最上面的那个元素。top=s;因为现在最上面的节点是s了,所以让top指向s,使s成为栈顶...
c语言编程题:从键盘输入一个十进制数,将其转换为二进制、八进制和十六...
if(S.top==-1)return 0; \/\/栈空 else{ x=S.data[S.top];S.top--;return 1;} } void display(Stack &S){ int x;while(S.top!=-1){ pop(S,x);cout<<x<<' ';} cout<<endl;} \/\/应用程序 void func(int n,int m)\/\/n为十进制数,m为2,8,或16 { Stack S;InitStack...
求助~~c语言做超大整数的加减,用栈实现
StGetTop(Stack *s){ double t;if(!StEmpty(s)){ t=s->data[s->top];} else { printf("StGeTop:The stack is empty!");t=NULL;} return t;} \/*将数字字符转换成整形*\/ int ChrTransferint(char c){ int n;switch(c){ case '0': n=0;break;case '1': n=1;break;...
【高分】帮忙用汇编语言做一个程序:学生成绩统计
; 功能:键盘输入一个指定位数的十进制数字,将其转换成二进制数并保存在指定的内存单元。; 由于限定最大数据类型为字,所以,数字位数最多:5,最大无符号数:65536; 约定:直接回车,视为数字0; 入口:@@Digits=数字位数;di=保存输入的数字首地址; @@Type_Data=保存的数据类型,B=字节类型,W=字类型。; 出口:...
在C++中如何编出一个函数将整型数转化为字符串形式输出?
把一个带符号的整数转换为一个ASCII字符串。数字字符的ASCII值有什么特点呢?它们是颠倒顺序排列的;字符”0”的ASCII值加上1等于”1”的ASCII值,以此类推。因此,数字字符的ASCII就等于这个数字加上字符”0”的ASCII值。(注意,字符”0”的ASCII值是一个不等于零的数值,而这个数值代表着字符”0”...
全国MS Office高级应用考试题库
B.一个对象具有另一个对象的性质 C.各对象之间的.共同性质 D.类之间共享属性和操作的机制 14[单选题] 在一个非零无符号二进制整数之后添加一个0,则此数的值为原数的( )。 A.4倍 B.2倍 C.1\/2倍 D.1\/4倍 15[单选题] 下列叙述中,正确的是( )。 A.CPU能直接读取硬盘上的数据 B.CPU能直接存取...
什么是算法与数据结构
算法(Algorithm)是一系列解决问题的清晰指令,也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。 算法可以理解为...
单共享栈
算法分析: 由十进制转换为其他进制的数的规则,可知,求得的余数的顺序为由低位到高位,而输出则是由高位到低位。 因此,这正好利用栈的特点,先将求得的余数依次入栈,输出时,再将栈中的数据出栈。void conversion () { InitStack(S); \/\/ 构造空栈 scanf ("%d",&N); \/\/输入一个十进制数 while (N) {...