正文之前
熟悉我的人都知道,我是不屑于说废话的, 所以,就不废话了。另外,本系列估计快要完了,因为我估计要去读博士了,计算机的哟,以后的文章就不倾向于小白文了,能看懂的受众估计也不多,多半简书就成了科普和流水账,感情戏的首发地点,至于高深的文章应该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 对不起啦。等我跟老师面谈完,如果顺利我周末就定火车票去找你,如果不顺利,我估计还要到处跑着去找老师,因为快签订保研协议书了,到时候后悔什么的没有余地了。虽然我知道你很气,很伤心,但是从理性角度来说,我还是倾向于先处理我未来五年的大方向的问题,所以先委屈你了,等周六给你个惊喜,不过这次不敢搭夜车去找你了,太难受了!!!!上次差点死在火车站!