zoukankan      html  css  js  c++  java
  • 将单链表逆置*

    有一个不带头结点的单链表L(至少有1个结点),
    第一个结点指针为head,编写算法将L逆置,
    即最后一个结点变成第一个结点,倒数第二个结点变成第二个结点,如此等等。

    #include<stdio.h>
    #include<stdlib.h>
    
    //链表中节点的结构
    typedef struct Link {
        int  data;
        struct Link* next;
    }link;
    
    //链表初始化
    link* initByTailInsert(link* phead) {
        link* first_node = (link*)malloc(sizeof(link));//创建第一个节点
        //第一个结点先初始化
        first_node->data = 1;
        first_node->next = NULL;
        phead = first_node;//头指针指向第一个节点
    
        //尾插入赋值
        for (int i = 2; i < 10; i++) {
            link* new_node = (link*)malloc(sizeof(link)); //申请新的结点
            new_node->data = i;
            new_node->next = NULL;
            first_node->next = new_node;  //第一个结点的指针域指向这个新申请的结点
            first_node = new_node;  //第一个结点后移
        }
    
        //printf("头指针指向的值是:%d
    ", phead->data);//1
        return phead;  //将指向第一个结点的头指针返回
    }
    
    
    link* reverseLink(link* phead){
        link* p = NULL; 
        link* q = phead; //q指向当前被改变指针域的结点
        while (q != NULL) {
            phead = phead->next;
            q->next = p;
            p = q;
            q = phead;
        }
        phead = p;
        return phead;
    }
    
    
    void showLink(link* phead) {
        link* tmp = phead;//将头指针赋给tmp,tmp也是一个头指针
        //只要tmp指针指向的结点的next不是Null,就执行输出语句。
        while (tmp != NULL) {
            printf("%d ", tmp->data);
            tmp = tmp->next;
        }
        printf("
    ");
    }
    
    void main() {
        link* myhead = NULL;
        myhead = initByTailInsert(myhead);//创建头指针,得到经过初始化后的头指针
        printf("初始化链表为:
    ");
        showLink(myhead);
        printf("将单链表逆置后:
    ");
        myhead = reverseLink(myhead);
        showLink(myhead);
    }
    

  • 相关阅读:
    Android AHandle AMessage
    android java 与C 通过 JNI双向通信
    android 系统给应用的jar
    UE4 unreliable 同步问题
    UE4 difference between servertravel and openlevel(多人游戏的关卡切换)
    UE4 Run On owing Client解析(RPC测试)
    UE4 TSubclassOf VS Native Pointer
    UE4 内容示例网络同步Learn
    UE4 多人FPS VR游戏制作笔记
    UE4 分层材质 Layerd Materials
  • 原文地址:https://www.cnblogs.com/shanlu0000/p/12696470.html
Copyright © 2011-2022 走看看