根据算法
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