zoukankan      html  css  js  c++  java
  • 单链表的操作

    #include "stdafx.h"
    #include<iostream>
    
    using namespace std;
    
    typedef int ElemType;
    
    typedef enum Status {
        success, fail, fatal, rangeerror, overflow
    }Status;
    
    typedef struct node {
        ElemType data; //数据域
        struct  node * next; //指针域
    }ListNode,*ListNodePtr;
    
    typedef ListNodePtr List, *ListPtr;
    
    
    Status List_Init(ListPtr L) {
        Status status = fatal;
        *L = (ListNodePtr)malloc(sizeof(ListNode));/*分配存储空间*/
        if (*L) {
            (*L)->next = NULL;
            status = success;
        }
        return status;
    }
    
    void List_Clear(ListPtr L) {
        ListNodePtr p = *L;
        ListNodePtr q = p->next;
        while (q) {
            p->data = q->data;
            free(q);
            q = p->next;
        }
    }
    
    void List_Destroy(ListPtr L) {
        List_Clear(L);
        free(L);//删除头节点
    }
    
    bool List_Empty(ListPtr L) {
        return (*L)->next == NULL;
    }
    
    int List_Size(ListPtr L) {
        int length = 0;
        ListNodePtr p = (*L)->next;
        while (p) {
            length++;
            p = p->next;
        }
        return length;
    }
    
    Status List_SetPosition(ListPtr L, int pos, ListNodePtr * ptr) {
        Status status = fail;
        ListNodePtr p = *L;
        int i = 0;
        while (ptr && i < pos) {
            i++;
            p = p->next;
        }
        if (p && i == pos) {
            *ptr = p;
            status = success;
        }
        return status;
    }
    
    Status List_Prior(ListPtr L, int pos, ElemType *elem) {
        Status status = fail;
        ListNodePtr ptr;
        status = List_SetPosition(L, pos - 1, &ptr);
        if (status == success) {
            *elem = ptr->data;
        }
        return status;
    }
    
    Status List_Next(ListPtr L, int pos, ElemType *elem) {
        Status status = fail;
        ListNodePtr ptr;
        status = List_SetPosition(L, pos + 1, &ptr);
        if (status == success) {
            *elem = ptr->data;
        }
        return status;
    }
    
    Status List_Insert(ListPtr L, int pos, ElemType elem) {
        Status status = fail;
        ListNodePtr ptr, s;
        status = List_SetPosition(L, pos - 1, &ptr);
        if (status == success) {
            s = (ListNodePtr)malloc(sizeof(ListNode));
        }
        if (s) {
            s->data = elem;
            s->next = ptr->next;
            ptr->next = s;
        }
        else {
            status = fail;
        }
        return status;
    }
    
    Status List_Remove(ListPtr L, int pos) {
        Status status = fail;
        ListNodePtr ptr;
        status = List_SetPosition(L, pos - 1, &ptr);
        if (status == success) {
            ptr->next = ptr->next->next;
            free(ptr->next);
        }
        return status;
    }
    
    Status List_Create(ListPtr L, ElemType elem[], int n) {
        Status status = success;
        ListNodePtr p, q;
        int i = n - 1;
        q = (ListNodePtr)malloc(sizeof(ListNode));
        q->next = NULL;
        while (i >= 0) {
            p = (ListNodePtr)malloc(sizeof(ListNode));
            if (!p) {
                status = fatal;
                break;
            }
            p->data = elem[i];
            p->next = q->next;
            q->next = p;
            i--;
        }
        *L = q;
        return status;
    }
  • 相关阅读:
    ssm框架搭建出现的异常:The import org.springframework cannot be resolved
    ssm框架中的乱码问题的解决
    json语法和使用
    AJAX概述和简单使用
    JavaScript给动态插入的元素添加事件绑定
    Vue常用开源项目汇总
    ERROR in Template execution failed: ReferenceError: htmlwebpackPlugin is not defined
    Error: webpack.optimize.UglifyJsPlugin has been removed, please use config.optimizat
    vue-loader was used without the corresponding plugin. Make sure to include VueLoaderPlugin
    Error: Chunk.entrypoints: Use Chunks.groupsIterable and filter by instanceof Entrypoint instead
  • 原文地址:https://www.cnblogs.com/linkmust/p/10889397.html
Copyright © 2011-2022 走看看