• 数据结构考研--线性表例2-4


    //天勤p32,查找链表(带头结点)中是否存在一个值为x的节点,若存在则删除该节点,并返回x,若不存在则返回0
    //思路:其实就是个很简单的遍历问题,唯一的难点就是删除节点。
    //删除节点步骤:另它的上一个节点指向它的下一个节点。然后释放该节点的空间
    #include "stdio.h"
    #include<stdlib.h>
    typedef struct Node{    //结构体
        int data;
        Node *next;
    }Node;


    void init(Node *&p){    //初始化
        p->next = NULL;
    }

    void listCreate(Node *&p,int n){      //参数:头节点,数据
        Node *q = (Node *)malloc(sizeof(Node));
        //****头插法建立(插入)链表*********(后进先出)
        q->data = n;
        q->next = p->next;
        p->next = q;
        //****************
    }

    void Traversal(Node *&p){   //遍历
        Node *q = p->next;
        while (q != NULL)
        {
            printf("%d ",q->data);
            q = q->next;
        }
    }
     
     
    //********核心函数****************************
    int deleteSomeone(Node *&p,int x){
        Node *q = p->next;
        Node *w = p;    //w作为q的前驱节点,方便删除
        int n;
        while (q != NULL){
            if(q->data == x){
                n = q->data;
                w->next = q->next;    //q前驱指向q后继,这样就相当于删除了q 节点
                free(q);          //释放空间,这样就彻底删除了q节点
                return n;
            }
            q = q->next;    //如果没有等的就往下找
            w = w->next;     
        }
        return 0;   //如果能运行到这里说找不到。返回0
    }
    //********核心函数***********************
     
     
    int main(){
        Node *head = (Node *)malloc(sizeof(Node));
        init(head);
        for(int i=0;i<20;i++){
            listCreate(head,i);
        }
        int x = 6;
        int n = deleteSomeone(head,x);  
        Traversal(head);
        printf("   ___________%d",n);
        //printf("%d",head->data);
        getchar();
        return 0;
    }
  • 相关阅读:
    Nginx证书配置:tomcat证书jks文件转nginx证书.cet和key文件
    postgresql中实现按周统计详解
    symfony 初始化项目
    从零开始创建 symfony-cmf
    Installing Symfony project with PHP 7.3 version
    GIT Submodule的使用
    分享 koa + mysql 的开发流程,构建 node server端,一次搭建个人博客
    vue 响应式原理
    $nextTick 源码解析
    记一次webpack打包优化
  • 原文地址:https://www.cnblogs.com/BreezeFeng/p/13946594.html
Copyright © 2020-2023  润新知