A. 謝謝 試編寫演算法,計算i!*2i的值並存入數組a
不用那麼復雜。我的程序:
#include <stdio.h>
#define arrsize 10
#define maxint 10000
main () {
int i, j;
int result;
int tmp;
int a[arrsize];
tmp = 1;
for (i=1; i<=arrsize; i++) {
tmp *= i;
result = tmp * 2 * i;
if (result >= maxint)
break;
else
a[i-1] = result;
}
for (j=0; j<i-1; j++)
printf ("a[%2d] = %5d\n", j, a[j]);
getch();
}
B. 試編寫演算法求一元多項式
float Polynomial(int n, int a[], float x)
/* 求一元多項式的值P(x)。 */
/* 數組a的元素a[i]為i次項的系數,i=0,...,n */
{ int i;
float b=1.0, P=a[0];
if(n==0) P=a[0];
else {
for(i=1;i<=n;i++)
{ b=b*x;
P=P+a[i]*b;
}
} return P;
}
C. 試編寫演算法求一元多項式Pn(x)=a0+a1x+a2x2+a3x3+…anxn的值Pn(x0),
//下面是參數顯式傳遞法計算多項式的值,全局變數的隱式傳遞留給你了。
#include<stdio.h>
constintMAXSIZE=60;//多項式項數
doublefx(doublean[],doublex,intn){
doubleFnx=0;
while(--n>=0)Fnx=Fnx*x+an[n];
returnFnx;
}
intmain(){
intn=0;
doublex,an[MAXSIZE];
printf("輸入多項式系數('q'tofinish):");
while(scanf("%lf",&an[n])==1&&n<MAXSIZE){
++n;
printf("輸入多項式系數('q'tofinish):");
}
fflush(stdin);
printf("x=");
scanf("%lf",&x);
printf("f(%lf)=%lf
",x,fx(an,x,n));
return0;
}
D. 試編寫演算法,計算i!×2^i的值並存入數組
編寫演算法計算i!×2^i的值步驟如下:
1,打開Visual Studio 2012後,單擊左上角的「新建項目」。

E. 試編寫一個演算法,計算帶頭結點的循環單鏈表的長度
int length(struct list * head)
{
int i = 0;
struct list *tmp;
if( head == NULL)
return 0;
if( head -> next == head)
return 1;
tmp = head->next;
while(tmp != head)
{
i++;
tmp = tmp -> next;
}
return i;
}
F. 試編寫一個演算法 將升序的二叉排序樹變為降序的二叉排序樹
將一棵根為root的升序二叉排序樹轉為降序二叉排序樹,演算法思路是:
(1) 如果樹root為空,演算法結束;
(2) 將root的左子樹轉為降序二叉排序樹,將root的右子樹轉為降序二叉排序樹;
(3) 將root的左右孩子進行交換,即左孩子變為右孩子,右孩子變為左孩子。
在C語言下,用二叉鏈表表示二叉排序樹,實現該演算法的過程如下:
typedef char datatype;
typedef struct _node{
datatype data;
_node *lchild, *rchild;
}TNode, *PNode, BitTree, *PBitTnode, *PSearchTree;
void ChangeDescen(PSearchTree root) {//將根為root的升序二叉排序樹轉換為降序
PNode tmp;
if(root == NULL) return;
ChangeDescen(root->lchild);
ChangeDescen(root->rchild);
tmp = root->lchild;
root->lchild = root->rchild;
root->rchild = tmp;
}
G. 試編寫一個演算法,把單鏈表改變成循環鏈表
將單鏈表改成循環鏈表只需將單鏈表最後一個結點的指針指向頭結點,即p->next = head。
單鏈表是一種鏈式存取的數據結構,用一組地址任意的存儲單元存放線性表中的數據元素。其數據是以結點來表示的,每個結點的構成:元素(數據元素的映象) + 指針(指示後繼元素存儲位置),元素就是存儲數據的存儲單元,指針就是連接每個結點的地址數據。
循環鏈表也是一種鏈式存貯結構。和單鏈表相比,循環鏈表中最後一個結點的指針域指向頭結點,整個鏈表形成一個環。
H. 試編寫一個遞歸演算法,由正整數序列w1,w2,...wn構造哈夫曼樹
給出一個原則性的演算法吧:
哈夫曼演算法:
一、對給定的n個權值{W1,W2,W3,...,Wi,...,Wn}構成n棵二叉樹的初始集合
F={T1,T2,T3,...,Ti,...,Tn},其中每棵二叉樹Ti中只有一個權值為Wi的根結點,它的左右子樹均為空,並以Ti的權值Wi的升序排列。
二、在F中選取兩棵根結點權值最小的樹作為新構造的二叉樹的左右子樹,新二叉樹的根結點的權值為其左右子樹的根結點的權值之和。
三、從F中刪除這兩棵樹,並把這棵新的二叉樹同樣以升序排列加入到集合F中。
四、重復二和三兩步,直到集合F中只有一棵二叉樹為止。