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); }