• 链表操作笔记


    /**
    	链表基本操作
    	增,删,查,改,创建,摧毁
    	2016.12.7
    */
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cstdlib>
    #include<cmath>
    #include<queue>
    #include<algorithm>
    #include<stack>
    using namespace std;
    typedef struct node{
        int data;
        struct node *next;
    }NODE;
    ///遍历链表
    void showList(NODE *head){
        NODE *p=head;
        while(p){
            if(!p->next){///细节处理链表最后一个元素后加换行,其余加空格
                printf("%d
    ",p->data);
            }
            else{
                printf("%d ",p->data);
            }
            p=p->next;
        }
    }
    ///摧毁链表,释放每个节点的内存
    void des(NODE *p){
        while(p){
            des(p->next);
            free(p);
        }
    }
    ///在第一个5后面添加一个5
    void addNode(NODE*head){///参数列表新的head(1)指向主函数的head(2),两个指针指向同一块内存。
        NODE *p=head,*tmp;
        while(p->data!=5)p=p->next;
    
        tmp=(NODE*)malloc(sizeof(NODE));
        tmp->data=p->data;
    
        tmp->next=p->next;
        p->next=tmp;
    }
    ///在每一个奇数后添加100
    void addList(NODE*head){
        NODE*p=head;
        while(p){
            if(p->data%2){
                NODE*q=(NODE*)malloc(sizeof(NODE));
                q->data=100;
    
                q->next=p->next;
                p->next=q;
            }
            p=p->next;
        }
    }
    ///删除节点,测试为删除数据为5的节点
    NODE* del(NODE**head){///指向指针的指针
        NODE *p=*head,*q;
        q=p->next;
        while(q){
            if(q->data==5){
                p->next=q->next;
                free(q);
                q=p->next;
            }
            else{
                p=p->next;
                q=q->next;
            }
        }
        if((*head)->data==5){///如果头要删除是,返回新的头指针
            p=*head;
            *head=(*head)->next;
            free(p);
        }
    }
    int main()
    {
        NODE *head,*tail,*p;
        head=tail=NULL;
        int a;
        while(~scanf("%d",&a)){///创建链表,以EOF为结束
            p=(NODE*)malloc(sizeof(NODE));
            p->data=a;
            p->next=NULL;
            if(!head){
                tail=head=p;
            }
            else{
                tail->next=p;
                tail=p;
            }
        }
        //addNode(head);
        //addList(head);
        del(&head);
        showList(head);
        return 0;
    }
    


  • 相关阅读:
    漫谈施工企业信息化规划(修订)
    SOAOffice 中间件,北京科翰软件
    组建“建筑施工企业信息化技术交流”QQ群(102226121),欢迎参与!
    国产、免费业务流程梳理工具SAM,炎黄盈动公司产品
    (参考)OpenExpressApp架构-信息系统开发平台
    逍遥笔输入法,哈!
    昨天开了一天的会!!
    昨天回到北京了!
    幸福是什么?
    周末辽宁兴城
  • 原文地址:https://www.cnblogs.com/Q1143316492/p/6260746.html
Copyright © 2020-2023  润新知