12月6日 数据结构 周三

来源:互联网 发布:化工公司工艺软件 编辑:程序博客网 时间:2024/05/16 16:56
数据结构
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("编号不正确!");//编号错误
    }
    }
}


如果你不能成为别人生命中的礼物,就不要走进别人的生活。