算法(反转):字符串 链表 反转

1.字符串反转:

/**

 给定一个字符串 str 请假字符串反转输出

 

 示例:

 

 给定 str = @"I am a programmer"

 返回 str = @"remmargorp a ma I"

 */

+ (void)stringReverse{

    char myStr[] = "I love my country";

    char *left = myStr;

    char *right = myStr + strlen(myStr) - 1;

    while (left < right) {

        char temp = *left;

        *(left++) = *right;

        *(right--) = temp;

    }

    NSLog(@"反转输出:%s",myStr);

}

运行:

 

2.单链表反转

+ (void)listReverse {

    //定义结构体

    struct Node *head = NULL;

    struct Node *currentTail = NULL;

    for (int i  = 0; i < 10; i++) {

        struct Node *node = malloc(sizeof(struct Node));

        node->datas = i;

        if (head == NULL) {

            head = node;

        }else {

            currentTail->next = node;

        }

        currentTail = node;

    }

    //打印原结构体

    struct Node *origiNode = head;

    printf("原始结构体:");

    while (origiNode != NULL) {

        printf("%d",origiNode->datas);

        origiNode = origiNode->next;

    }

    

    //开始反转

    struct Node *moveNode = head;

    struct Node *newNode = NULL;

    while (moveNode != NULL) {

        struct Node *tempNode = moveNode->next;

        moveNode->next = newNode;

        newNode = moveNode;

        moveNode = tempNode;

    }

    

    //打印反转结构体

    struct Node *reverseNode = newNode;

    printf("\n反转结构体结构体");

    while (reverseNode != NULL) {

        printf("%d",reverseNode->datas);

        reverseNode = reverseNode->next;

    }

}

运行:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值