• C--c语言模拟java的linkedList


      java的linkedList集合,是一个单链集合,因此只需要知道头,便知道后边接着的全部。

      第一步:先把头文件写好 linkedList.h

    //这是头文件
    struct person
    {
        
        int value;
        struct person * next;
    };
    typedef struct person p;
    /*addLast从最后一个处添加。 先判断头在不在,
        如果头在的话,就循环判断知道找到最后一个,创建实例,添加至最后一个的后面位置处   */
    void addLast(p* head,int val);
    //传一个头进来,便知道后面的是什么
    void print(p* head);
    
    //removeFirst移除第一个,先判断第一个在不在,在的话先移除,然后再把后面的覆盖过来,
    //用指针的指针的原因  1因为如果用单个*传过来的参数只是值拷贝,无法对原来的头进行修改,如果用指针的指针即可对原来的头修改
    void removeFirst(p** head);

      第二步:linkedList.c

    #include <stdio.h>
    #include <stdlib.h>
    #include "linkedList.h"
    
    void addLast(p* head,int val){
        //判断头
        if(head==NULL) return;
        p* current = head;
        //循环
        while(current->next != NULL){
            current = current->next;
        }
        //创建实例
        p* newPerson = malloc(sizeof(p));  //创建实例,指定内存空间
        newPerson->value = val;
        newPerson->next = NULL;
        
        current->next = newPerson;
    
    }
    void print(p* head){
        
        if(head==NULL) return;
        
        p* current = head;
        while(current != NULL){
            
            printf("%d
    ",current->value);
            current = current->next;
        }
    
    }
    
    void removeFirst(p** head){
        if(*head==NULL) return;
        p* current;
        if((*head)->next != NULL){
            current = (*head)->next;
            
        }
        free((*head));
        *head = current;
    
    }
    int main(){
    
        p* head = malloc(sizeof(p));
        head->value = 1;
        head->next = NULL;
    
        p* last = malloc(sizeof(p));
        
        
        addLast(head,2);
        printf("addLast......
    ");
        
        print(head);
    
    }
  • 相关阅读:
    源码分析:Java对象的内存分配
    源码分析:Java堆的创建
    Java Main如何被执行?
    HotSpot模板解释器目标代码生成过程源码分析
    Java常量池解析与字符串intern简介
    Java类的连接与初始化 (及2013阿里初始化笔试题解析)
    css中对position的几种定位方式的最佳诠释
    DB2学习笔记
    three.js:Failed to execute 'texImage2D' on 'WebGLRenderingContext解决方案
    线程隔离ThreadLocal
  • 原文地址:https://www.cnblogs.com/zDr-zHy/p/4915412.html
Copyright © 2020-2023  润新知