【我的漫漫考研路】数据结构·删除单链表中所有值为X的节点

正文之前

熟悉我的人都知道,我是不屑于说废话的, 所以,就不废话了。另外,本系列估计快要完了,因为我估计要去读博士了,计算机的哟,以后的文章就不倾向于小白文了,能看懂的受众估计也不多,多半简书就成了科普和流水账,感情戏的首发地点,至于高深的文章应该CSDN,简书,公众号,掘金,博客园等地方都会发一遍~喜欢我的小伙伴们可以随便关注一个,不过简书应该还是比较齐全的吧。毕竟都这么久了,而且简书对我也有特别的意义,所以我还是舍不得丢弃的
~

正文

本段程序实现了:删除带头结点的单链表中所有Data为X的节点,而且跟王道的不一样的是,我只用了一个指针,另外,王道的P037的第一题,我运行了一下,没法跑出来,所以估计有点问题,然后第二题他用了两个指针交替,我就用一个,个人感觉还不错,起码空间复杂度比他的低~~ 走你

#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE  4
//注:定义队列结构体及其指针
typedef struct List
{
    int Data;
    struct List *next;
    
} List, *PtrL;


void Insert(PtrL ptrl,int data)
{
    PtrL s;
    s=(List *)malloc(sizeof(List));
    s->Data=data;
    s->next=ptrl->next;
    ptrl->next=s;
}
void ShowList(PtrL ptrl)
{
    PtrL show;
    show=ptrl;
    while(show)
    {
        int num=show->Data;
        printf("\n##########\n#");
        printf("\t%d\t",num);
        printf("#\n");
        printf("##########\n");
        printf("\t||\n\t||\n\t||\n\t||");
        printf("\n   ~~~~~      " );
        printf("\n    VVV       " );
        printf("\n     V        " );
        printf("\n" );
        show=show->next;
    }
    printf("\tNULL\n\n\n\n");
}


void Del(PtrL ptrl)
{
    PtrL D;
    D=ptrl->next;
    ptrl->next=D->next;
    printf("\n%d\n",D->Data);
    free(D);
}

void DelX(PtrL ptrl,int x)
{
    PtrL p=ptrl;
    if(p->next==NULL) return;
    else if (p->next->Data==x)
    {
        Del(p);
        DelX(p, x);
    }
    else
        DelX(p->next,x);
}


int main()
{
    PtrL ptrl;
    ptrl=(List *)malloc(sizeof(List));
    ptrl->next=NULL;
    Insert(ptrl,2);
    Insert(ptrl,5);
    Insert(ptrl,3);
    Insert(ptrl,8);
    Insert(ptrl,5);
    Insert(ptrl,11);
    Insert(ptrl,9);
    Insert(ptrl,7);
    ShowList(ptrl);
    DelX(ptrl,5);
    ShowList(ptrl);
    return 0;
}

运行结果如下:


##########
#   0   #
##########
    ||
    ||
    ||
    ||
   ~~~~~      
    VVV       
     V        

##########
#   7   #
##########
    ||
    ||
    ||
    ||
   ~~~~~      
    VVV       
     V        

##########
#   9   #
##########
    ||
    ||
    ||
    ||
   ~~~~~      
    VVV       
     V        

##########
#   11  #
##########
    ||
    ||
    ||
    ||
   ~~~~~      
    VVV       
     V        

##########
#   5   #
##########
    ||
    ||
    ||
    ||
   ~~~~~      
    VVV       
     V        

##########
#   8   #
##########
    ||
    ||
    ||
    ||
   ~~~~~      
    VVV       
     V        

##########
#   3   #
##########
    ||
    ||
    ||
    ||
   ~~~~~      
    VVV       
     V        

##########
#   5   #
##########
    ||
    ||
    ||
    ||
   ~~~~~      
    VVV       
     V        

##########
#   2   #
##########
    ||
    ||
    ||
    ||
   ~~~~~      
    VVV       
     V        
    NULL




5

5

##########
#   0   #
##########
    ||
    ||
    ||
    ||
   ~~~~~      
    VVV       
     V        

##########
#   7   #
##########
    ||
    ||
    ||
    ||
   ~~~~~      
    VVV       
     V        

##########
#   9   #
##########
    ||
    ||
    ||
    ||
   ~~~~~      
    VVV       
     V        

##########
#   11  #
##########
    ||
    ||
    ||
    ||
   ~~~~~      
    VVV       
     V        

##########
#   8   #
##########
    ||
    ||
    ||
    ||
   ~~~~~      
    VVV       
     V        

##########
#   3   #
##########
    ||
    ||
    ||
    ||
   ~~~~~      
    VVV       
     V        

##########
#   2   #
##########
    ||
    ||
    ||
    ||
   ~~~~~      
    VVV       
     V        
    NULL



Program ended with exit code: 0

正文之后

薇薇pig 对不起啦。等我跟老师面谈完,如果顺利我周末就定火车票去找你,如果不顺利,我估计还要到处跑着去找老师,因为快签订保研协议书了,到时候后悔什么的没有余地了。虽然我知道你很气,很伤心,但是从理性角度来说,我还是倾向于先处理我未来五年的大方向的问题,所以先委屈你了,等周六给你个惊喜,不过这次不敢搭夜车去找你了,太难受了!!!!上次差点死在火车站!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容