zoukankan      html  css  js  c++  java
  • 学习算法

    表指针实现。第二种方法是使用访问列表,模拟指针。

    在我的理解中学习,它是创建一个节点数组,模拟存储装置,然后从中分配内存和释放内存。

    但实际的内存没有被释放~

    下面的代码直接附着:


    //
    //  main.cpp
    //  CursorList
    //
    //  Created by Alps on 14-7-27.
    //  Copyright (c) 2014年 chen. All rights reserved.
    //
    
    #include <iostream>
    
    #define CursorSpace 100
    #define ElementType int
    
    using namespace std;
    
    typedef int PtrToNode;
    typedef PtrToNode List;
    typedef PtrToNode Position;
    
    void InitializeCursorList(void);
    List MakeEmpty(List L);
    int isEmpty(List L);
    int isLast(List L, Position P);
    void Insert(List L, Position P, ElementType X);
    void Delete(List L, ElementType X);
    Position Find(List L, ElementType X);
    Position FindPrevious(List L, ElementType X);
    void DeleteList(List L);
    
    struct Node{
        ElementType X;
        Position Next;
    };
    
    struct Node CursorList[CursorSpace];
    
    int isEmpty(List L){
        return CursorList[L].Next == 0;
    }
    
    int isLast(List L, Position P){
        return CursorList[P].Next == 0;
    }
    
    void InitializeCursorList(void){
        int i = 0;
        for (i = 0; i < CursorSpace; i++) {
            CursorList[i].Next = i + 1;
        }
        CursorList[CursorSpace - 1].Next = 0;
    }
    
    Position CursorAlloc(){
        Position P;
        P = CursorList[0].Next;
        CursorList[0].Next = CursorList[P].Next;
        CursorList[P].Next = 0;
        return P;
    }
    
    void CursorFree(Position P){
        CursorList[P].Next = CursorList[0].Next;
        CursorList[0].Next = P;
    }
    
    Position Find(List L, ElementType X){
        Position P = CursorList[L].Next;
        while (CursorList[P].X != X && P) {
            P = CursorList[P].Next;
        }
        if (P == 0) {
            return false;
        }
        return P;
    }
    
    Position FindPrevious(List L, ElementType X){
        Position P = L;
        Position tmp = CursorList[P].Next;
        while (CursorList[tmp].X != X && tmp) {
            tmp = CursorList[tmp].Next;
            P = CursorList[P].Next;
        }
        return P;
    }
    
    void Delete(List L, ElementType X){
        Position P = FindPrevious(L, X);
        Position tmp = CursorList[P].Next;
        CursorList[P].Next = CursorList[tmp].Next;
    }
    
    void Insert(List L, Position P, ElementType X){
        Position tmp;
        tmp = CursorAlloc();
        CursorList[tmp].X = X;
        CursorList[tmp].Next = CursorList[P].Next;
        CursorList[P].Next = tmp;
    }
    
    void DeleteList(List L){
        Position P = CursorList[L].Next;
        Position tmp = P;
        while (tmp != 0) {
            P = CursorList[P].Next;
            CursorFree(tmp);
            if (P == 0) {
                break;
            }
            tmp = P;
        }
        CursorList[L].Next = 0;
    }
    
    void Print(List L){
        Position P = CursorList[L].Next;
        while (P != 0) {
            printf("%d ",CursorList[P].X);
            P = CursorList[P].Next;
        }
        
        printf("
    ");
    }
    
    int main(int argc, const char * argv[])
    {
    
        printf("start ...
    ");
        InitializeCursorList();
        List L = CursorAlloc();
        Insert(L, L, 1);
        Insert(L, L, 3);
        Insert(L, L, 5);
        Insert(L, L, 4);
        Print(L);
        Position P = FindPrevious(L, 3);
        printf("%d
    ",P);
        Delete(L, 3);
        Print(L);
        DeleteList(L);
        Print(L);
        return 0;
    }
    

    算法是没有问题。之后,我每一个功能考完试~


    有任何疑问,请留言~

  • 相关阅读:
    Discuz X 2.5 点点(伪静态)
    jq 、xml 省市级联动
    php memcache 初级使用(2)
    关于windows虚拟内存管理的页目录自映射
    SharePoint 2010 网络上的开发经验和资源
    SharePoint 2010 Reporting Services 报表服务器正在内置 NT AUTHORITY\SYSTEM 账户下运行 解决方法
    SharePoint 2010 Reporting Services 报表服务器无法解密用于访问报表服务器数据库中的敏感数据或加密数据的对称密钥 解决方法
    Active Directory Rights Management Services (AD RMS)无法检索证书层次结构。 解决方法
    SharePoint 2010 Reporting Services 报表服务器实例没有正确配置 解决方法
    SharePoint 2010 页面引用 Reporting Services 展现 List 报表
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5044065.html
Copyright © 2011-2022 走看看