//i相当于指数,数组值就是相应指数的系数 receive[i] = 0.0; }
//指数及数组下标 int expByIndex = 0; //顺次扫描A while (a != NULL)
{//A不空,顺次扫描B while (b != NULL) {
//两项做乘法之后的指数和
expByIndex = a->exponent + b->exponent;
//系数之间做乘,结果保存到对应的指数下(下标), receive[expByIndex] += (a->coefficient) * (b->coefficient); b = b->next; }
b = LB->next; a = a->next; }// end of while
//数组保存的是全部项,两两分别乘法之后的结果,保存在对应的下标(数组位置) for (int i = 0; i < maxNum + 1; i++) { // 0?
if (isZeroByDouble(receive[i])) {//not do sth } else
{ //生成结点
ptr = (Polynomial)malloc(sizeof(Node)); //接到 LC 表 c->next = ptr;
c = c->next; //赋值
c->coefficient =receive[i]; c->exponent = i;
}// end of if }// end of for
c->next = NULL; }
//链表销毁
void destroyList(Polynomial *L) {
Polynomial ptr = NULL; while (*L != NULL) {
ptr = (*L)->next; free(*L); *L = ptr;
} //
*L = NULL;
cout<<\销毁完毕\ }
#endif
八、试编写一个整数进制转换的通用函数convert(int num, STACK S, int n),要求将整数m转换为n进制数,n进制数的各位依次存放在栈S中。并在主函数中进行测试。 要求:1、定义栈以及栈的型。
2、定义栈的各种操作。 3、实现函数convert。
4、在main函数中,通过调用函数convert将num的n进制数存放到一个栈中,并通过出栈的方法输出该n进制数 //栈的数组实现
//此处将栈底规定在数组的底部,即让maxlength-1指向栈底的第一个元素 #include
#define maxlength 100//栈的容量 typedef int Elementtype;
struct STACK//定义整型线性数组栈 { int top; Elementtype elements[maxlength]; };
bool isEmpty(STACK S)//栈是否为空 { if(S.top>=maxlength) return true; else return false; }
void makeNull(STACK &S)//栈置空 { S.top = maxlength; }
Elementtype top(STACK S)//返回栈顶元素 { if(isEmpty(S)) cout<<\栈为空!\ else return(S.elements[S.top]); }
void pop(STACK &S)//出栈,删除栈顶元素 { if(isEmpty(S)) cout<<\栈为空!\ else S.top++; }
void push(STACK &S, Elementtype x)//进栈 { if(S.top == 0) cout<<\栈已满!\ else { --S.top; S.elements[S.top] = x; } }
void convert(int num,STACK &S,int n)//进制转换函数 { while(num!=0) { push(S,num%n); num/=n; } }
void print(STACK S)//输出转后的结果 { while(!isEmpty(S)) { cout< cout< void main() { STACK S; makeNull(S); int num = 1024; int n = 2; cout<<\转化前的十进制数为:\ cout<<\转化后的\进制数为:\ convert(num,S,n); print(S); } 九、设有一个循环队列Queue,只有头指针front,不设尾指针,另设一个含有元素个数的计数器count,试写出相应的判断队列空、判断队列满、出队算法和入队算法。 要求: 1、定义相应的循环队列的型(只有头指针,没有尾指针,但有一个元素个数的计数器); 2、定义该队列的四个算法:判断队列空、判断队列满、出队算法和入队算法; 3、在main函数验证算法的正确性。 //没有尾指针的队列,但有一个计数器,所以尾指针rear可以用头指针表示出来 #include #define maxlength 20 typedef int elementtype; struct QUEUE { elementtype elements[maxlength]; int front; int count;//元素个数计数器:rear=(front+count-1)%maxlength }; int addone( int i )//指针后移 { return ((i+1)%maxlength); } bool isEmpty(QUEUE Q)//队列是否为空 { if (Q.count==0) return true ; else return false ; } bool isFull(QUEUE Q)//队列是否已满 { if (Q.count==maxlength) return true; else return false; } elementtype front(QUEUE Q)//返回队头元素 { if (isEmpty(Q)) return NULL ; else return(Q.elements[Q.front]); } void enQueue(elementtype x,QUEUE &Q)//队列后插入一个元素,入队 { if (isFull(Q)) cout<<\队列已满\ else { Q.count++; Q.elements[(Q.front+Q.count-1)%maxlength]=x; } } void deQueue (QUEUE &Q)//删除队头元素,出队 { if(isEmpty(Q)) cout<<\队列为空\ else { Q.front=addone(Q.front); Q.count--; } } void print(QUEUE Q) {