我写的一些数据结构的算法

5204711353 2005-01-27 04:10:06
密码认证

#include <stdio.h>
password()
{
int i,l;
FILE *fp;
printf("默认密码100\n");
printf("请输入密码\n");
scanf("%d",&i);
if((fp=fopen("密码.txt","r"))==0)
{
if(i==100)
printf("输入正确\n");
else
printf("请再次输入\n");
}
else
{ fp=fopen("密码.txt","r");
fscanf(fp,"%d",&l);
if(i==l)
printf("输入正确");
else
printf("对不起请重新输入\n");
fclose(fp);
} 124706716
} 13077094055
word()
{
int i;
FILE *fp;
fp=fopen("密码.txt","w");
printf("请输入你要更新的密码\n");
scanf("%d",&i);
fprintf(fp,"%d",i);
fclose(fp);
}

void main()
{
int i;
printf("<1>输入密码\t<2>修改密码\n");
scanf("%d",&i);
while(1)
{
if(i==1)
password();
else if(i==2)
word();
else
exit(1);
scanf("%d",&i);
}
getch();
}


色必夫循环 数组实现



void main()
{
int i,n,m,k=0,h=1,pass,j,a[20],b[20];
printf("请输入你要输入的人数\n");
scanf("%d",&n);
for(j=1;j<=n;j++)
{
a[j]=j;
printf("请输入密码\n");
scanf("%d",&b[j]);
}
printf("\n");
printf("请输入m");
scanf("%d",&m);
j=1;
while(h)
{
if(a[j]!=0)
k++;
if(k==m)
{ printf("%d",a[j]);
a[j]=0;
pass=b[j];
k=0;
h=0;
}
j++;
if(j>n)
j=1;
}
while(h<n-1)
{
if(a[j]!=0)
k++;
if(k==pass)
{
k=0;
printf("%d",a[j]);
a[j]=0;
pass=b[j];
h++;
}
j++;
if(j>n)
j=1;
}
j=1;
for(j=1;j<=n;j++)
if(a[j]!=0)
printf("%d",a[j]);
}

建立双向循环链表


struct student
{
int num;
struct student *next,*prior;
};
#define len sizeof(struct student)
#include <stdio.h>
void main()
{ int n,b;
struct student *p,*p1,*head,*p2;
n=0;
p=(struct student *)malloc(len);
head=NULL;
scanf("%d",&p->num);
while(p->num!=0)
{
n++;
if(n==1)
{
head=p;
p->next=p;
p->prior=p;
}
else
{
p1->next=p;
p->prior=p1;
}
p1=p;
p=(struct student *)malloc(len);
scanf("%d",&p->num);
}
free(p);
p1->next=head;
head->prior=p1;
while(n>0)
{
printf("%d",head->prior->next->num);
printf("%d",head->next->prior->num);
n--;
printf("\n");
head=head->next;
}
}
...全文
472 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
qingyuan18 2005-04-07
  • 打赏
  • 举报
回复
数据结构的确是基础!
ren1983 2005-04-07
  • 打赏
  • 举报
回复
楼主,我好羡慕呀,我们最近学习数据结构好多都不会,谢谢拉
fly_cat_ 2005-04-06
  • 打赏
  • 举报
回复
24点太差
输入 3 3 2 2 没有输出
fly_cat_ 2005-04-06
  • 打赏
  • 举报
回复
24点有bug
输入1 2 3 4 输出 1×2×3×4
输入2 1 3 4 输出 2×1×3×4 和 2/1 ×3×4
fly_cat_ 2005-04-06
  • 打赏
  • 举报
回复
str[n]>'*'&&str[n]<='-' 是什么意思啊
vivijone 2005-04-06
  • 打赏
  • 举报
回复
可以用c++编些类以后可以直接调用就行了阿
xjp6688 2005-04-06
  • 打赏
  • 举报
回复
不错
huangguojun 2005-04-05
  • 打赏
  • 举报
回复
谢了
我来跟大家学习了!!
大家不要BS我呀我很差的
du51 2005-04-05
  • 打赏
  • 举报
回复
楼主太强了.
flyarry 2005-04-05
  • 打赏
  • 举报
回复
哗~~ 都自己想的呀
学习....
SammyLan 2005-04-05
  • 打赏
  • 举报
回复
用哈夫曼树给文件加密更好啦
rorl 2005-01-28
  • 打赏
  • 举报
回复
向楼主学习
dongpy 2005-01-28
  • 打赏
  • 举报
回复
mark
5204711353 2005-01-28
  • 打赏
  • 举报
回复
输入4个数字帮你算24,下面是我写的程序
#include <iostream.h>
float a[4];
char stp[4]={'+','-','*','/'};
char str[4];
void search(float,char,float,int);
float sum(float,char,float);
int main()
{
int n=0;
for(int i=0;i<=3;i++)
cin>>a[i];

for(int j=0;j<=3;j++)
{
str[n]=stp[j];
search(a[0],str[n],a[1],n+1);
}
return 0;
}
void search(float f,char c,float b,int n)
{
int j=0,k=0;
for(j=0;j<=3;j++)
{
str[n]=stp[j];
if(n<=2)
{
if(c=='*'||c=='/'||str[n]>'*'&&str[n]<='-')
search(sum(f,c,b),str[n],a[n+1],n+1);
else
search(f,c,sum(b,str[n],a[n+1]),n+1);
}
else
{
if(sum(f,c,b)==24)
{
for(k=0;k<=2;k++)
cout<<a[k]<<str[k];
cout<<a[k];
cout<<endl;
}
return;
}
}
return;
}
float sum(float a,char c,float b)
{
switch(c)
{
case '-':
a=a-b;
break;

case '+':
a=a+b;
break;

case '*':
a=a*b;
break;

case '/':
a=a/b;
break;
}
return (a);
}

5204711353 2005-01-28
  • 打赏
  • 举报
回复
由求冥集得到的算法~
比如输入4
输入4个数字
1 2 3 4
求用这些数字相加可以得到那些数
可以是其中1个数字也可以是2个数字相加3个数字相加4个数字相加
程序如下

#include <iostream.h>
int b[100];
int i;
void fun(int k,int *p)
{
int m=0;
if(k==i)
{
for(int l=0;l<k;l++)
if(b[l]!=0)
{
m=m+b[l];
}
if(m!=0)
cout<<m;
cout<<endl;

}
else
{

b[k]=p[k];
fun(k+1,p);
b[k]=0;
fun(k+1,p);
}
}
int main()
{
cout<<"请问你要输入几个数字\n";

cin>>i;
cout<<endl;
int *p=new int[i];
for(int j=0;j<i;j++)
cin>>p[j];
cout<<endl;
fun(0,p);
return 0;
}
5204711353 2005-01-28
  • 打赏
  • 举报
回复
数据结构上的求冥集算法~
#include <iostream.h>
int b[100]={0};
int i;
void fun(int k,int *p)
{
int m=0;
if(k==i)
{
for(int l=0;l<k;l++)
if(b[l]!=0)
{
cout<<b[l];

m++;
}
cout<<endl;
if(m==0)
cout<<"{ }";
}
else
{

b[k]=p[k];
fun(k+1,p);
b[k]=0;
fun(k+1,p);
}
}
int main()
{
cout<<"请问你要输入几个数字\n";

cin>>i;
cout<<endl;
int *p=new int[i];
for(int j=0;j<i;j++)
cin>>p[j];
fun(0,p);
delete [] p;
return 0;
}
gentlelover 2005-01-28
  • 打赏
  • 举报
回复
mark
comparative 2005-01-28
  • 打赏
  • 举报
回复
不错
xuelong_zl 2005-01-28
  • 打赏
  • 举报
回复
有机会要多向楼主学习了
xuelong_zl 2005-01-28
  • 打赏
  • 举报
回复
好厉害,我这方面是最差的了,一点都不会
加载更多回复(7)

69,368

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧