zoukankan      html  css  js  c++  java
  • 链表的简单创建及使用

    //
    //  ViewController.m
    //  Link_list_Demo
    //
    //  Created by 张凯泽 on 16/5/10.
    //  Copyright © 2016年 rytong_zkz. All rights reserved.
    //
    
    #import "ViewController.h"
    struct Link_list{
        int data;
        struct Link_list * Pnext;
    };
    struct Link_list * head_list;
    //创建链表 head节点
    bool creatLink_list()
    {
        head_list = (struct Link_list*)malloc(sizeof(struct Link_list));
        if (head_list == NULL) {
            return false;
        }else{
            head_list ->data = 0;
            head_list ->Pnext = NULL;
            return true;
        }
        
        
    }
    //增加节点从尾部添加
    bool addLink_list(struct Link_list * note)
    {
        //没有头节点
        if (head_list == NULL) {
            return false;
        }
        //只有头节点
        if (head_list ->Pnext == NULL) {
            head_list->Pnext = note;
            note ->Pnext = NULL;
            return true;
        }
        //有两个节点
        struct Link_list * p = head_list ->Pnext;
        struct Link_list * temp = head_list;
        while (p != NULL) {
            temp = p;
            p = p ->Pnext;
    
        }
        temp->Pnext  = note;
        note ->Pnext = NULL;
        
        return true;
    
    }
    //插入
    bool insertLink_list(struct Link_list * note)
    {
        if (head_list == NULL) {
            return false;
        }
        struct Link_list * p = head_list;
        
        note->Pnext = p->Pnext;
        p -> Pnext = note;
            return true;
        
    }
    
    //删除
    bool deleteLink_list(int index)
    {
        if (head_list == NULL) {
            return false;
        }
        struct Link_list * p = head_list ->Pnext;
        int lenth = 0;
        while (p != NULL) {
            lenth ++;
            p = p->Pnext;
            
        }
        if (lenth<index) {
            return false;
        }else{
        struct Link_list * q = head_list;
            p = head_list;
            for (int i = 0; i <index; i++) {
                q = p;
                p = p ->Pnext;
                
            }
            
            q ->Pnext = p ->Pnext;
            free(p);
            return true;
        
        }
        
    }
    //销毁链表
    void destroyNodeList()
    {
        //没有头节点
        if (head_list == NULL) {
            return;
        }
        //只有头节点
        if (head_list ->Pnext == NULL) {
            free(head_list);
            return;
        }
        //两个节点以上者(包括两个节点)
        struct Link_list * p = head_list->Pnext;
        // = NULL;
        while (p != NULL) {
            struct Link_list * q = p;
            p = p->Pnext;
            free(q);
        }
        free(head_list);
        head_list = NULL;
    }
    // 展示
    void showLink_list()
    {
        if (head_list == NULL) {
            return ;
            
        }
        struct Link_list * p = head_list;
        while (p != NULL) {
            NSLog(@"%p-----%d",p,p ->data);
           p = p ->Pnext;
            
        }
        
    }
    @interface ViewController ()
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        creatLink_list();
        
        struct Link_list * note1 = (struct Link_list*)malloc(sizeof(struct Link_list));
        note1 ->data = 1;
        addLink_list(note1);
        
        struct Link_list * note2 = (struct Link_list*)malloc(sizeof(struct Link_list));
        note2 ->data = 2;
        addLink_list(note2);
        
        struct Link_list * note3 = (struct Link_list*)malloc(sizeof(struct Link_list));
        note3 ->data = 3;
        addLink_list(note3);
        
        struct Link_list * note4 = (struct Link_list*)malloc(sizeof(struct Link_list));
        note4 ->data = 4;
        addLink_list(note4);
        
        showLink_list();
        //destroyNodeList();
        deleteLink_list(2);
        showLink_list();
    
        
        
    }
    
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    @end
  • 相关阅读:
    tcp没用吗?为什么MOBA、“吃鸡”游戏不推荐用tcp协议
    这样做动画交互,一点都不费力!
    sql server 小记——分区表(上)
    vs中不得不会的一些小技巧(1)——细说查找
    Aforge.net之旅——开篇:从识别验证码开始
    Redis Hash操作
    Varint 数值压缩
    LevelDB Version
    LevelDB Cache机制
    LevelDB Compaction操作
  • 原文地址:https://www.cnblogs.com/zkzzkz/p/5481300.html
Copyright © 2011-2022 走看看