• 循环链表模板


    #include <stdio.h>
    #include <stdlib.h>
    typedef struct lnode{
        int data;
        struct lnode* next;
    } node,*linklist;
    void initlist(linklist &l){
         linklist p=(linklist)malloc(sizeof(node));
         p->next=p;//此处可以控制循环链表
         l=p;
    }
    void InsertFront(linklist &l,int e){//从表头插入元素
        linklist p;
        p=(linklist)malloc(sizeof(node));
        p->data=e;
        p->next=l->next;
        l->next=p;
    }
    void InsertEnd(linklist &l,int e){//从末尾插入元素
        linklist p,q;
        p=(linklist)malloc(sizeof(node));
        p->data=e;
        q=l;
        while(q->next!=l){//此处判断扫到末尾的条件为!=l
            q=q->next;
        }
        p->next=q->next;
        q->next=p;
    }
    void Print(linklist l){
        linklist p;
        p=l->next;
        while(p!=l){
            printf("%d ",p->data);
            p=p->next;
        }
        printf("
    ");
    }
    void DeleteFront(linklist &l,int &val){//删除表前面的元素
        linklist p;
        p=l->next;
        if(p!=l){//判断是不是空表
            l->next=p->next;
            val=p->data;
            free(p);
        }
        else
            printf("LinkList is empty!/n");
    }
    void DeleteEnd(linklist &l,int &val){//删除表后面的元素
        linklist p,q;//q为p的前驱节点
        q=l;
        p=l->next;
        if(p!=l){//判断表是否为空
            while(p->next!=l){
                q=p;
                p=p->next;
            }
            val=p->data;
            q->next=p->next;
        }
        else
            printf("LinkList is empty!/n");
    }
    int main(){
        linklist l;
        int i,res;
        initlist(l);
        for(i=1; i<=8; i++){
            InsertFront(l,i+38);
            InsertEnd(l,i+100);
        }
        Print(l);//输出表的元素
        DeleteFront(l,res);
        DeleteEnd(l,res);
        Print(l);
        return 0;
    }
  • 相关阅读:
    十万个为什么 —— 理化篇
    地行、地貌
    工业镜头基础知识整理
    parfor —— matlab 下的并行循环
    浅谈设计模式在GIS中的应用
    android ellipsize 属性详解
    Servlet 学习总结-1
    搜索引擎有用的外链建设的方式
    Servlet 学习总结-2
    如何用批处理命令批量配对重命名
  • 原文地址:https://www.cnblogs.com/13224ACMer/p/5034200.html
Copyright © 2020-2023  润新知