c语言模拟面向对象思维实现单链集合
2015-10-27 21:04
302 查看
第一步:先把头文件写好 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){ //判断头是否等于null if(head==NULL) return; //如果不等于null 创建一个新的指针对象等于头 p* current = head; //循环 while(current->next != NULL){ //判断如果叶伟栋后面有人的话,那就指向那个人,一直指直到curren->等于null current = current->next; } //创建实例 p* newPerson = malloc(sizeof(p)); //创建实例,指定内存空间 newPerson->value = val; newPerson->next = NULL; current->next = newPerson; //上面循环得到了最后的next没有人了,则addLast添加newPerson对象到最后去 } void print(p* head){ if(head==NULL) return; //没有头则返回它 p* current = head; //创建一个对象 把头赋给它 while(current != NULL){ //不等于null进入循环 printf("%d\n",current->value); //输出它的值 1 current = current->next; //指向下一个对象,把 它赋给curent 又进入while循环,不等于空又输出值2,一直循环直到等于空 } } void removeFirst(p** head){ //引用传递 ** if(*head==NULL) return;//若头等于null则说明没有头,没有头就无法确定确定下一个人,则说明没有人,返回它 p* current; //创建一个对象 if((*head)->next != NULL){ current = (*head)->next; //若叶伟栋后面有人,则不等于null,就把下一个对象赋给curren, } free((*head));//上面已经查到了叶伟栋后面有人 所以可以内存了 *head = current;//把头赋给下一个查到的对象对象 } int main(){ p* head = malloc(sizeof(p));//分配空间 head->value = 1; //值为1 head->next = NULL; //下一个对象等于NULL 等于没有下一个 终止 p* last = malloc(sizeof(p)); //分配空间 addLast(head,2); //在最后添加一个对象 printf("addLast......\n"); print(head); //输出头的值 }
相关文章推荐
- C++ STL,ATL,WTL之间的联系和区别
- 折半查找数组中某一元素(二分法查找)
- C语言指针初见(一)
- C语言 - 快速排序算法
- C++知识点总结
- C++ 命令模式
- 利用c语言计算n的阶乘及其求和(多种方法)
- C语言 - 直接插入排序和直接选择排序算法
- C语言 - 冒泡排序算法(交换排序) 从大到小
- VC C++ 线程同步的方法
- 关于C++中的前置声明
- C语言内存布局
- 杭电ACM2016-数据的交换输出
- UE4 C++使用Multi Theard的教程
- C语言实验——Hello World!(printf练习)
- C语言程序入门第一节课/3
- C++邻接矩阵创建图及深度、广度遍历
- 合并两个排序链表(LintCode)
- 利用c语言求出0~999之间的所有“水仙花数”并输出
- 用c语言输出菱形(13行)