zoukankan      html  css  js  c++  java
  • 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);
    
    }
  • 相关阅读:
    程序员的私人外包专家
    目录
    Autumoon Code Library 2008 Beta版 重新发布
    为您的开发团队找个好管家
    .NET编程利器:Reflector for .NET
    3. Extension Methods(扩展方法)
    1. C# 3.0简介
    4. Lambda Expressions (Lambda表达式)与Expressions Tree(表达式树)
    7. Query Expressions(查询表达式)
    6. Anonymous Types(匿名类型)
  • 原文地址:https://www.cnblogs.com/zDr-zHy/p/4915412.html
Copyright © 2011-2022 走看看