C描述数据结构

C描述数据结构

1.指针的定义使用以及取地址符&使用

#include <stdio.h>
int main(int argc, char const *argv[])
{
    int *point = 0;
    int num = 10;

    point = &num;

    printf("*point value = %d.\n",*point);
    return 0;
}

result:

*point value = 10.

2.函数定义调用以及参数指针传递实际值修改

#include <stdio.h>
int max(int x, int y);
void swap_two_nums(int *xp, int *yp);
int main(int argc, char const *argv[])
{
    int *point1 = 0;
    int *point2 = 0;
    int num1 = 10;
    int num2 = 11;

    printf("num1 value = %d.\n", num1);
    printf("num2 value = %d.\n", num2);

    point1 = &num1;
    point2 = &num2;
    swap_two_nums(point1, point2);
    printf("After swap:===========================\n");
    printf("num1 value = %d.\n", num1);
    printf("num2 value = %d.\n", num2);

    printf("Max value = %d.\n", max(num1, num2));

    return 0;
}

int max(int x, int y)
{
    return x > y ? x : y;
}

void swap_two_nums(int *xp, int *yp)
{
    int temp = *xp;
    *xp = *yp;
    *yp = temp;
}

result:

num1 value = 10.
num2 value = 11.
After swap:===========================
num1 value = 11.
num2 value = 10.
Max value = 11.

3. 结构体调用,typedef 使用

#include <stdio.h>

// struct Node
// {
//     int value;
//     struct Node *Next;
// };

typedef struct Node
{
    int value;
    Node *Next;
} Node;

int main(int argc, char const *argv[])
{
    Node n1, n2, n3;
    Node *np1, *np2, *np3;

    np1 = &n1;
    np2 = &n2;
    np3 = &n3;

    n1.value = 1;
    n1.Next = np2;

    n2.value = 2;
    n2.Next = np3;

    n3.value = 3;
    n3.Next = 0;

    return 0;
}

result:

在这里插入图片描述

4. 递归调用以及动态规划解决斐波那契数列第n项值

#include <stdio.h>
int feibo(int n);
int main(int argc, char const *argv[])
{

    int sum = feibo(5);
    return 0;
}

// int feibo(int n){ // 递归
//     if(n<=1) return 1;

//     return feibo(n-1) + feibo(n-2);
// }

int feibo(int n)
{

    int array[10] = {0};
    array[0] = array[1] = 1;
    while (--n) // 数组滚动,[n & 1],一直让数组下标 在 0和1之间重复
    {
        array[n & 1] = array[0] + array[1];
        printf("%d.\n", n & 1);
    }

    return array[1];
}

result:

0.
1.
0.
1.
The fifth num is :8.

使用动态规划可以减少使用的空间,只需要将重复的子问题的解存放在一个数组中即可。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值