首页 > 编程语言 > 详细

c语言模拟面向对象思维实现单链集合

时间:2015-10-27 21:58:30      阅读:157      评论:0      收藏:0      [点我收藏+]
第一步:先把头文件写好 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语言模拟面向对象思维实现单链集合

原文:http://www.cnblogs.com/osxchen/p/4915536.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!