zoukankan      html  css  js  c++  java
  • 数据结构考研--线性表例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;
    }
  • 相关阅读:
    从滴滴flinkCEP说起
    从零讲Java,给你一条清晰地学习道路!该学什么就学什么!
    从coalesce算子发散开的
    从架构理解价值-我的软件世界观
    为什么说Redis是单线程的?
    全排列_获取第几个排列_获取是第几个排列__康托展开,逆康托展开
    求排列是全排列的第几个,求第几个是全排列___康托展开,逆康托展开
    搜索入门_简单搜索bfs dfs大杂烩
    无根树同构_hash
    乘法逆元_三种方法
  • 原文地址:https://www.cnblogs.com/BreezeFeng/p/13946594.html
Copyright © 2011-2022 走看看