根據演算法
1. 根據演算法寫程序,幫忙看看哪裡錯了
LinkList*CreateList()
{
intdata,x;
LinkList*L;
LinkList*p;
LinkList*q;
L=(LinkList*)malloc(sizeof(LNode));
L->next=NULL;
q=L;//指針指向頭部,從頭部開始增加
printf("請輸入你的任意個整數,輸入-1表示結束 ");
printf("pleaseinputastringx:");
scanf("%d",&x);
while(x!=-1)
{
p=(LinkList*)malloc(sizeof(LNode));//建新結點
p->data=x;
p->next=NULL;
q->next=p;//指針指向新結點,原來是p=p->next,即p=NULL了
q=q->next;//指針稱到表尾
p=NULL;
printf("pleaseinputastringx:");
scanf("%d",&x);
}
q->next=NULL;
returnL;
}
//附個完整的調試程序
#include<stdio.h>
#include<assert.h>
#include<stdlib.h>
#include<malloc.h>
typedefintDataType;
structlist_node
{
DataTypedata;
structlist_node*next;
}list_node,LNode;
typedefstructlist_nodeLinkList;
voidPrintList(LinkList*Head)//列印表
{
LinkList*PCur=NULL;
PCur=Head;
while(PCur)
{
printf("%d->",PCur->data);
PCur=PCur->next;
}
printf("NULL ");
}
LinkList*CreateList()
{
intdata,x;
LinkList*L;
LinkList*p;
LinkList*q;
L=(LinkList*)malloc(sizeof(LNode));
L->next=NULL;
q=L;//指向頭指針
printf("請輸入你的任意個整數,輸入-1表示結束 ");
printf("pleaseinputastringx:");
scanf("%d",&x);
while(x!=-1)
{
p=(LinkList*)malloc(sizeof(LNode));//建新結點
p->data=x;
p->next=NULL;
q->next=p;//指針指向新結點
q=q->next;//指針稱到表尾
p=NULL;
printf("pleaseinputastringx:");
scanf("%d",&x);
}
q->next=NULL;
returnL;
}
intmain(void)
{
LinkList*p=CreateList();
PrintList(p);
return0;
}
2. 根據RSA演算法,選擇兩個素數p=11,q=7,設公鑰n=77,e=7,私鑰是多少
N=pq=7*11=77
(p-1)(q-1)=6*10=60
根據公式d× e ≡ 1 (mod (p-1)(q-1))
又e=7,所以 7*d≡ 1 (mod 60)。。即 7d mod 60 = 1。
7x43=301。。301除以6剛好餘1.
所以d=43
______________________________________________
下面是公式依據:
假設Alice想要通過一個不可靠的媒體接收Bob的一條私人訊息。她可以用以下的方式來產生一個公鑰和一個私鑰:
1.隨意選擇兩個大的質數p和q,p不等於q,計算N=pq。
2.根據歐拉函數,不大於N且與N互質的整數個數為(p-1)(q-1)
3.選擇一個整數e與(p-1)(q-1)互質,並且e小於(p-1)(q-1)
4.用以下這個公式計算d:d× e ≡ 1 (mod (p-1)(q-1))
5.將p和q的記錄銷毀。
e是公鑰,d是私鑰。d是秘密的,而N是公眾都知道的。Alice將她的公鑰e傳給Bob,而將她的私鑰d藏起來。
3. 已知圖的鄰接表如下所示,根據演算法,則從頂點0出發按廣度優先遍歷的結點序列是
A。
首先,認識下廣度優先遍歷,相當於樹的層序遍歷,通常藉助隊列(先進先出)實現演算法。題中從0出發,即0入隊,鄰接表訪問順序為3,2,1,則入隊順序也為3,2,1所以答案A。
例如:
深度:FCBDEA或者FCADEB
廣度:FCABDE或者FCBADE
(3)根據演算法擴展閱讀 :
從二叉樹的遞歸定義可知,一棵非空的二叉樹由根結點及左、右子樹這三個基本部分組成。因此,在任一給定結點上,可以按某種次序執行三個操作:
(1)訪問結點本身(N),
(2)遍歷該結點的左子樹(L),
(3)遍歷該結點的右子樹(R)。
以上三種操作有六種執行次序:
NLR、LNR、LRN、NRL、RNL、RLN。
前三種次序與後三種次序對稱,故只討論先左後右的前三種次序。
4. 根據c語言演算法寫程序
剛好這兩天也在玩鏈表,想寫個模板.給你一段代碼吧
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedefintDataType;//數據類型,如果這里更改了類型,
//要注意更改鏈表輸出函數中輸出格式.
struct_Node
{
DataTypedata;
struct_Node*next;
}Node;
typedefstruct_Nodelist_single;
list_single*Node_Create(DataTypedata)//新建結點
{
list_single*p=NULL;
p=(list_single*)malloc(sizeof(list_single));
if(p==NULL)
{
printf("mallocfair! ");
exit(1);
}
p->data=data;
p->next=NULL;
//printf("data=%d ",p->data);
returnp;
}
voidPush_Back(list_single*head,DataTypedata)//表尾添加
{
list_single*p=NULL;
if(head==NULL)
{
head=Node_Create(data);
p=head;
}
else
{
p=head;
while(p->next)
{
p=p->next;
}
}
p->next=Node_Create(data);
}
voidList_Print(list_single*head)//列印鏈表
{
list_single*p=head;
printf("Head");
while(p->next)
{
p=p->next;
//printf("%3c",p->data);
printf("->%d",p->data);//注意保持這個輸出格式與DataType一致
}
printf(" ");
}
intList_Count(list_single*head)//表長
{
intk=0;
list_single*p=head;
while(p->next)
{
p=p->next;
k++;
}
returnk;
}
list_single*List_Create(void)//建表
{
intx;
list_single*head=NULL;
list_single*p=NULL;
head=Node_Create(NULL);//建頭結點
p=head;
if(p==NULL)
{
printf("mallocfair! ");
exit(1);
}
printf("輸入一個數x ");//追加結點
scanf("%d",&x);
while(x!=-1)
{
Push_Back(p,x);//追加結點到表尾,或者只用下面兩句代碼,效果一樣
//p->next=Node_Create(x);
//p=p->next;
scanf("%d",&x);
}
returnhead;//返回表頭
}
intmain()
{
list_single*p;
p=List_Create();//建表
List_Print(p);//輸出
printf("Size:%d ",List_Count(p));//輸出表長
return0;
}
5. 用C語言:根據給定的演算法,判斷輸入的密碼是否正確
#include<stdio.h>
void main()
{
int n,password=123456,i=1;
while(1)
{
printf("輸入密碼:");
scanf("%d",&n);
if(n==password)
printf("Welcome to use the software\n");
else
{
if(i<3)
printf("剩餘的可輸入密碼的次數為:%d\n",3-i);
else
printf("Password error ! You can not use the software\n");
i++;
}
if(i>=4||n==password)break;
}
}
這個是不需要用return的,簡明一點,初學的應該會
6. 根據演算法的定義及其重要性,請寫出單鏈表插入演算法的實現過程,並用C語言代碼實現,跪求
頭插法:
void CreateListF(LNode &L,int a[],int n)
{
LNode *s;
int i;
L = (LNode*)malloc(sizeof(LNode));
L->next = NULL;
for(int i=0;i<n;i++)
{
s= (LNode*)malloc(sizeof(LNode));
s->data = a[i];
s->next = L->next;
L->next = s; //成為新的開始
}
}
7. 根據演算法計算該身份證是男性還是女性 用python怎麼輸出
您好,這個用到機器學習識別圖像,根據模型計算的特徵值和設置的閾值,最後輸出男性或者女性。
8. 根據演算法,第五步列印數值是多少:(1)初始值x=3,s=0 (2)x=x+2
x=x+2=3+2=5,s=s+x=0+5=5;
判斷s<2009,則繼續(2);
x=x+2=7,s=s+x=5+7=12....
也就是說,s相當於一個x的累積表,只要s<2009,就一直把x的值進行加和,即5+7+9+11+...一直加到和>=2009
等差數列的公式Sn=[2na1+n(n-1)d]/2
a1=5 d=2 Sn=2009 代入得n=42.86或-46.86(舍)
再算下n=42時,Sn=1932(舍);
n=43時,Sn=2021,符合,
所以n=43即為所求,an=a1+(n-1)d=5+(43-1)*2=89
9. 根據演算法的實現位置分類,擁塞控制演算法可以分為----和----
源演算法和鏈路演算法
10. c語言根據演算法求5個數的和
#include
<stdio.h>
int
main()
{
int
s=0,i,x;
for(i=1;i<=5;i++)
{
scanf("%d",&x);
s+=x;
}
return
0;
}
簡化了下,如果你贏是要變數a的話,寫兩個for