数据结构
12月6日 周三
问题:
单链表
递归斐波那契数列
栈
/* Note:Your choice is C IDE */
#include "stdio.h"
#define M 5
struct stack
{
int a[M];
int top;
};
struct stack s;
int x,e;
void main()
{
printf("1.入栈 2.出栈\n");
s.top=-1;
while(1)
{
printf("请选择功能编号");
scanf("%d",&x);
switch(x)
{
case 1:
if(s.top==M-1)
{
printf("栈满!\n");
}
else
{
printf("请输入入栈元素");
scanf("%d",&e);
s.a[++s.top]=e;//先加后压 s.top++;s.a[s.top]=e
printf("入栈成功!\n");
}
break;
case 2:
if(s.top==-1)
{
printf("空栈!\n");
}
else
{
printf("%d \n",s.a[s.top--]);
}
break;
}
}
}
递归
/* Note:Your choice is C IDE */
#include "stdio.h"
one(int e)//递归求和
{
if(e==1)
{
return 1;
}
else
{
return e+one(e-1);
}
}
two(int e)//n的阶乘
{
if(e==0)
{
return 1;
}
else
{
return e*two(e-1);
}
}
three(int e,int k)//n的k次幂
{
if(k==0)
{
return 1;
}
else
{
return e*three(e,k-1);
}
}
four(int e)//斐波那契数列
{
if(e==1||e==2)
{
return 1;
}
else
{
return four(e-1)+four(e-2);[color]
}
}
void main()
{
int x=1,e,k;//定义变量
while(x!=0)//循环
{
printf("\n");
printf("\t\t1.递归求和\n");//功能1
printf("\t\t2.n的阶乘\n");//功能2
printf("\t\t3.n的k次幂\n");//功能3
printf("\t\t4.递归斐波那契数列\n");//功能4
printf("\t\t0.退出\n");//退出
printf("请输入功能编号");//提示用户
scanf("%d",&x);//用户输入
switch(x)//选择
{
case 1:
printf("请输入一个值");
scanf("%d",&e);
printf("1-%d的和为%d\n\n",e,one(e));//调用与输出
break;
case 2:
printf("请输入一个值");
scanf("%d",&e);
printf("%d的阶乘为%d",e,two(e));//调用与输出
break;
case 3:
printf("请输入底数和指数并以空格分隔");
scanf("%d %d",&e,&k);
printf("%d的%d次幂为%d",e,k,three(e,k));//调用与输出
break;
case 4:
printf("请输入月份");
scanf("%d",&e);
for(k=1;k<=e;k++)//循环
{
printf("%d ",four(k));//调用与输出
}
break;
case 0://退出
break;
default:printf("输入的功能编号有误!");//编号错误
}
}
}
新知识:
感悟:重点关注基础 基础永远不会改变 只有根扎的深 树才能长的高
队列
/* Note:Your choice is C IDE */
#include "stdio.h"
#define M 5//宏常量
struct queue//结构体
{
int a[M];
int front;
int rear;
};
struct queue q;//结构体变量
int b,i;
void main()
{
printf("1.入队 2.出队 3.打印\n");//提示
q.front=q.rear=0;//赋初值
while(1)//循环
{
printf("\n请输入功能编号");//提示
scanf("%d",&b);//输入
switch(b)//选择
{
case 1:
if(q.rear==M)//判断是否排满
{
printf("队列已满\n");
}
else
{
printf("请输入入队元素");
scanf("%d",&q.a[q.rear]);//输入
q.rear++;
}
break;
case 2:
if(q.front==q.rear)//判断
{
printf("队列为空\n");
}
else
{
printf("出队元素为%d",q.a[q.front]);
q.front++;
}
break;
case 3:
for(i=q.front;i<q.rear;i++)//判断
{
printf("%d ",q.a[i]);
}
break;
default:printf("编号不正确!");//编号错误
}
}
}
如果你不能成为别人生命中的礼物,就不要走进别人的生活。