筱贺的C语言学习--第五天 各种各样的循环

本文学自于尚硅谷

流程控制--各种各样的循环

1、程序设计中的三种流程结构

1.1 顺序结构

  • 程序从上到下逐行地执行,中间没有任何判断和跳转。

1.2 分支结构

  • 根据条件,选择性地执行某段代码。

  • if…elseswitch-case两种分支语句。

1.3 循环结构

  • 根据循环条件,重复性的执行某段代码。

  • forwhiledo-while三种循环语句。

2、顺序结构

程序由上到下依次执行,改变上一行,对下一行的程序运行有影响

//
// Created by Administrator on 2025/1/13.
//对顺序结构的测试

#include <stdio.h>

int main(){
    int x = 1;
    int y = 2;
    printf("x = %d\n", x);
    printf("y = %d\n", y);
    //对x、y的值进行修改
    x++;
    y = 2 * x + y;
    x = x * 10;
    printf("x = %d\n", x);
    printf("y = %d\n", y);



    return 0;
}

3、分支结构1 if-else

3.1 单分支

if (条件表达式){}

 数学中学过

 3.2 双分支

if(条件表达式) { 
      语句块1;
}else {
      语句块2;
}

 3.3

### 如何用C语言实现单链表 #### 定义节点结构体 为了创建单链表,首先需要定义一个表示列表节点的结构体。该结构体通常包含两个部分:存储数据的部分以及指向下一个节点的指针。 ```c typedef struct ListNode { int data; struct ListNode *next; } ListNode; ``` 此代码片段定义了一个名为`ListNode`的结构体,它有一个整型变量`data`来保存节点的数据和一个指向相同类型结构体的指针`next`[^1]。 #### 初始化链表 初始化一个新的空链表可以通过设置头指针为NULL完成: ```c ListNode* head = NULL; ``` 这行简单的语句就完成了链表头部的初始化工作[^3]。 #### 头插法创建单链表 下面是一个采用头插法构建单链表的例子。这种方法会在每次插入新节点时将其放置于链表前端位置。 ```c ListNode* CreateListF() { ListNode *head = NULL; // 假设我们有三个要加入到链表中的数值分别为5, 4 和 3. int values[] = {5, 4, 3}; for (int i = sizeof(values)/sizeof(*values)-1; i >= 0; --i){ ListNode *newNode = malloc(sizeof(ListNode)); newNode->data = values[i]; newNode->next = head; head = newNode; } return head; } ``` 这段程序展示了如何通过循环迭代数组并利用动态分配内存的方式逐个添加新的节点至链表开头处。 #### 插入、删除和其他基本操作 除了创建链表外,还需要能够对其进行各种各样的操作,比如插入新元素、移除现有元素等。以下是几个常见的功能函数示例: - **Insert Node**: 将指定的新节点插入到已有的某个特定位置之前或之后。 - **Delete Node**: 移除符合条件的第一个匹配项。 - **Modify Node Data**: 更新给定条件下找到的第一条记录的内容。 - **Traverse List & Print Elements**: 遍历整个链条并将所有元素依次输出显示出来。 以上提到的功能都可以基于相似的原则编写相应的辅助方法来达成目的。 #### 主函数演示 最后,在主函数里可以调用上面所写的各个子过程来进行实际测试: ```c #include <stdio.h> #include <stdlib.h> // ... 上述定义过的其他函数 ... void printList(ListNode *node) { while (node != NULL) { printf("%d -> ", node->data); node = node->next; } puts("NULL"); } int main(){ ListNode *listHead = CreateListF(); printList(listHead); // 进一步的操作... freeList(listHead); // 清理资源 return 0; } ``` 这里展示的是怎样组合运用先前介绍的各种组件构成完整的应用程序逻辑流程,并且记得当不再需要链接串列的时候应该适当清理掉占用的空间以防止发生泄漏问题[^2].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值