为什么不允许删除循环单链表中最后一个结点?如何解决?

/*****************************************************/
/* 函数功能:建立一个空的循环单链表 /
/
函数参数:无 /
/
函数返回值:指向node类型变量的指针 /
/
文件名:clnkinit.c,函数名init() /
/
****************************************************/
node init() /建立一个空的循环单链表*/
{
return NULL;
}

/******************************************************/
/* 函数功能:获得循环单链表的最后一个结点的存储地址 /
/
函数参数:指向node类型变量的指针变量head /
/
函数返回值:指向node类型变量的指针 /
/
文件名:clnklist.c,函数名:rear() /
/
******************************************************/
node rear(node *head)
{
node *p;
if(!head)/
循环单链表为空*/
p=NULL;
else
{
p=head;/*从第一个结点开始*/
while(p->next!=head)/*没有到达最后一个结点*/
p=p->next;/*继续向后*/
}
return p;
}

/*****************************************************/
/* 函数功能:输出循环单链表中各个结点的值 /
/
函数参数:指向node类型变量的指针变量head /
/
函数返回值:空 /
/
文件名:clnklist.c,函数名:display() /
/
****************************************************/
void display(node head)
{
node *p;
if(!head) printf("\n循环单链表是空的!\n");
else
{
printf("\n循环单链表各个结点的值分别为:\n");
printf("%5d",head->info);/
输出非空表中第一个结点的值*/
p=head->next;/*p指向第一个结点的下一个结点*/
while(p!=head)/*没有回到第一个结点*/
{
printf("%5d",p->info);
p=p->next;
}
}
}​

/*****************************************************/
/* 函数功能:循环单链表中查找值为x的结点的存储地址 /
/
函数参数:指向node类型变量的指针变量head /
/
datatype类型的变量x /
/
函数返回值:指向node类型变量的指针 /
/
文件名:clnklist.c,函数名:find() /
/
****************************************************/
node find(node *head,datatype x)
{
/
查找一个值为x的结点*/
node q;
if(!head) /
循环单链表是空的*/
{
printf("\n循环单链表是空的!无法找指定结点!");
return NULL;
}
q=head;/* q指向循环单链表的第一个结点,准备查找*/
while(q->next!=head&&q->info!=x)/*没有查找到并且没有查找完整个表*/
q=q->next;/*继续查找*/
if(q->info==x) return q;
else
return NULL;
}

/*****************************************************/
/* 函数功能:循环单链表第i个结点后插入值为x的新结点*/
/* 函数参数:指向node类型变量的指针变量head /
/
datatype类型的变量x,int类型的变量i /
/
函数返回值:指向node类型变量的指针 /
/
文件名:clnklist.c,函数名:insert() /
/
****************************************************/
node insert(node *head,datatype x,int i)
{/*i为0时表示将值为x的结点插入作为循环单链表的第一个结点
/
node p,*q,*myrear;
int j;
p=(node
)malloc(sizeof(node));/*分配空间*/
p->info=x;/*设置新结点的值*/
if(i {printf("\n无法找到指定的插入位置!"); free(p);return head;}
if(i==0&&!head) /*插入前循环单链表如果是空的,则新结点的指针域应指向它自己*/
{ p->next=p;head=p;return head;}
if(i==0&&head) /*在非空的循环单链表最前面插入*/
{
myrear=rear(head);/*找到循环单链表的最后一个结点*/
p->next=head; /*插入(1)*/ head=p; /*插入(2)*/
myrear->next=p;/*插入(3)最后一个结点的指针域指向新插入的表中第一个结点*/
return head;
}
if(i>0&&!head) {printf("\n无法找到指定的插入位置!"); free(p);return head;}
if(i>0&&head)
{/*在非空的循环单链表中插入值为x的结点,并且插入的结点不是第一个结点*/
q=head;/*准备从表中第一个结点开始查找*/
j=1;/*计数开始*/
while(i!=j&&q->next!=head)/*没有找到并且没有找遍整个表*/
{
q=q->next;j++;/*继续查找,计数器加1*/
}
if(i!=j)/* 找不到指定插入位置,即i的值超过表中结点的个数,则不进行插入*/
{
printf("\n表中不存在第%d个结点,无法进行插入!\n",i);free(p);
return head;
}
else
{ /*找到了第i个结点,插入x*/
p->next=q->next;/*插入,修改指针(1)*/
q->next=p;/*插入,修改指针(2)*/
return head;
}
}

}

/*****************************************************/
/* 函数功能:在循环单链表中删除一个值为x的结点 /
/
函数参数:指向node类型变量的指针变量head /
/
datatype类型的变量x /
/
函数返回值:指向node类型变量的指针 /
/
文件名:clnklist.c,函数名:dele() /
/
****************************************************/
node dele(node *head,datatype x)
{
node *pre=NULL,*q;/*q用于查找值为x的结点,pre指向q的前驱结点
/
if(!head)/*表为空,则无法做删除操作*/
{
printf("\n循环单链表为空,无法做删除操作!");
return head;
}
q=head;/*从第1个结点开始准备查找*/
while(q->next!=head&&q->info!=x)/*没有找遍整个表并且没有找到*/
{
pre=q;
q=q->next;/*pre为q的前驱,继续查找*/
}/*循环结束后,pre为q的前驱*/
if(q->info!=x)/*没找到*/
{
printf("没有找到值为%d的结点!",x);
}
else /*找到了,下面要删除q*/
{
if(q!=head){pre->next=q->next;free(q);}
else
if(head->next==head){free(q);head=NULL; printf("ok1");}
else
{pre=head->next;
while(pre->next!=q) pre=pre->next; /*找q的前驱结点位置*/
head=head->next;
pre->next=head;
free(q);
printf("ok");
}
}
return head;
}

/*************************************/
/* 函数功能:循环单链表删除操作测试程序 /
/
函数参数:无 /
/
函数返回值:空 /
/
文件名:test16 函数名:main() /
/
************************************/

#include "stdio.h"
#include "conio.h"
#include "slnklist.h"
#include "clnklist.c"

void main()
{
node myhead,*tail;
myhead=init();
display(myhead);
myhead=insert(myhead,33,0);
display(myhead);
myhead=insert(myhead,55,1);
display(myhead);
myhead=insert(myhead,22,0);
printf("\n\n在循环单链表最前面插入22后的结果为:\n");
/
读者可以在相应的地方加上输出语句,给予适当的提示*/
display(myhead);
myhead=insert(myhead,77,3);
display(myhead);
tail=rear(myhead);
printf("\n\n\n使用尾部结点的指针域,打印循环单链表的结果为:\n");
display(tail->next);
myhead=dele(myhead,22); display(tail->next);//display(myhead);
myhead=dele(myhead,33); display(tail->next);//display(myhead);
myhead=dele(myhead,55); display(tail->next);
myhead=dele(myhead,77); display(tail->next);

getch();


图片说明

1个回答

感觉是下面这句的问题(排版看的好头疼啊)

 if(head->next==head){free(q);head=NULL; printf("ok1");}

这句应该是删除最后一个结点时进入的分支吧,应该是head->next=NULL吧?

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
带头结点的循环/非循环单链表删除开始结点的时间复杂度

* 数据结构的辅导书上答案是两个都是O(1). * 我觉得循环单链表要找到最后一个结点,把最后一个指针指向新的开始结点,所以,时间复杂度应该是O(n)。 是不是我哪里想错了呢?

数据结构算法设计: 请设计一个算法,统计一个循环单链表L中的结点个数。

算法设计: 请设计一个算法,统计一个循环单链表L中的结点个数。

函数与递归:搜索单链表最后一个结点

LinkNode * FindRear(LinkNode *f){ if(f==NULL) return NULL; else if(f–>link==NULL) return f; else return FindRear(f->link); }函数体中第二行代码是递归终止条件,第三行是调用自己简化问题。那么第一行代码if(f==NULL) return NULL;是干啥的?可以去掉吗?

无头结点的循环单链表的结点删除

#include<iostream> #include"LinkList.h" using namespace std; LinkList::LinkList(){ first=NULL; } LinkList::LinkList(int n){ Node *s,*r=NULL; int j=1; for(int i=0;i<n;i++) { s=new Node; if(!s){ cout<<"error!"<<endl; } s->data=j++; if(r==NULL) { r=s; first=r; } else { r->next=s; r=r->next; } } r->next=first; } LinkList::~LinkList(){ Node *q=NULL; while(first){ q=first; first=first->next; delete q; } } int LinkList::GetLength() { int len=0; Node *p=first; do{ len++; p=p->next; }while(p!=first); return len; } bool LinkList::Delete(int x){ Node *p=first->next; Node *pre=first; Node *q=NULL; int i=0; while(i<GetLength()){ if(p->data==x){ q=p; pre->next=q->next; delete q; return true; break; } p=p->next; pre=pre->next; i++; } return false; } void LinkList::PrintList(){ Node *p=first; do{ cout<<p->data<<" "; p=p->next; }while(p!=first); } void main(){ LinkList a(19); cout<<"输出表中所有元素:\n"; a.PrintList(); cout<<endl; a.Delete(1); a.PrintList(); }

设计算法统计循环单链表中结点的关键字值为x的结点信息(包括结点位置和结点个数)

要求列出1.循环单链表结点类型数据结构定义2.主函数3.统计信息函数

关于单链表中的头结点和尾结点问题

如题,对于单链表的头指针、头结点、和尾结点一直有点概念模糊。 ``` void CreateListR(ListNode* &L, int a[], int n) { L = (ListNode *)malloc(sizeof(ListNode)); L->next = nullptr; //建立空表 ListNode *s; ListNode *r; //指向尾端结点 r = L; for (int i = 0; i < n; i++) { s = (ListNode *)malloc(sizeof(ListNode)); s->data = a[i]; r->next = s; r = s; } r->next = nullptr; //最后将r->next置为nullptr } ``` 当我用如上尾插法建立一个单链表的时候, ``` int a[5] = {1,2,3,4,3}; ListNode *L; CreateListR(L, a, 5); ``` 最后得到的单链表是不是如图所示: ![图片说明](https://img-ask.csdn.net/upload/201712/09/1512795567_100621.jpg) 就是有一个头结点,其不为nullptr,但是没有存data,最后r->next = nullptr;这是将最后一个有值的结点的next指针指向了一个nullptr,所以是不是其实最后还有一个尾结点,这个结点为nullptr,但是如果统计结点的时候其实它也是一个结点的存在? 另外,当我创建好了单链表过后,如果我其他函数需要用到该表,例如: ``` int ListLength(ListNode* L) { int length = 0; ListNode *p = L; while (p->next != nullptr) { length++; p = p->next; } return length; } ``` 我传入的L是不是之前创建的链表的头结点(就是没有存储data,next指针指向第一个真正存储data的那一个结点)?

数据结构算法,C或者C++, 设计一个算法,查找带头节点的非空单链表L中第一个最大节点(最大节点可能有多个),并返回该节点的逻辑序号。

用C或者C++ 设计一个算法,查找带头节点的非空单链表L中第一个最大节点(最大节点可能有多个),并返回该节点的逻辑序号。

单链表中查找结点p并删除结点p

pointer *p,*q=NULL; p=find(head,i+1); cout<<p->data<<endl; q->next=p; q->next=p->next; delete p; } 网上的实现方法都是删除p的后继结点,我想直接删除p,按照我的想法上述语句应该是正确的,但是执行时候在q->next=p出显示又断点,怎么破 大神救我

设计算法在带头结点的单链表L中删除数据值最小的结点

//单链表类型定义如下: typedef struct node { int data; struct node *next; } ListNode; typedef ListNode *LinkList; //设计算法在带头结点的单链表L中删除数据值最小的结点(设链表中各结点数据值 均不相同)。函数的原型为:void f34(LinkList L)

C语言循环单链表解决约瑟夫问题

``` #include <stdio.h> #include <stdlib.h> typedef int Elemtype; typedef struct LNode { Elemtype data; struct LNode *next; }LNode,*LinkList; void createlist(LinkList *head,int n) { int i; LinkList p,q; *head=(LinkList)malloc(sizeof(LNode)); (*head)->next=*head; p=(*head)->next; for(i=0;i<n;i++) { q=(LinkList)malloc(sizeof(LNode)); q->data=i+1; q->next=p; p->next=(*head); p=q;//这句代码用处是什么呢? printf("%d\n",q->data); } } void yuesefuList(LinkList head,int n,int m,int k) { int i,rec=0; LinkList p,q; p=head->next; if(m>n) { printf("error!"); } for(i=1;i<m;i++) { p=p->next; printf("%d\n",p->data); if(p->next==head->next) p=p->next; } //开始报数 while(rec!=n){ for(i=0;i<k;i++) { p=p->next; if(p->next==head->next) p=p->next; } printf("%d ",p->data); //delete q=p->next; p->next=q->next; free(p); rec++; p=q->next; } } int main() { LinkList head; int n,m,k; printf("please enter the number of person\n"); printf("n="); scanf("%d",&n); printf("please enter the location of beginning\n"); printf("m="); scanf("%d",&m); printf("please enter the number of gap\n"); printf("k="); scanf("%d",&k); createlist(&head,n); //inputlist(head,n); yuesefuList(head,n,m,k); return 0; } ``` 约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。 大概思路是建立一个循环链表,先遍历到开始位置,通过while循环找到下一个结点,输出结点的数据域 通过了编译,但是输出结果是乱七八糟的数字。。。 求大神教教小弟orz

已知单链表L中的结点是按值非递减有序排列的试编写一算法将链表L中值为X的结点删除,使得L仍然有序。

单链表L中的结点是按值非递减有序排列的,这句话是什么意思?结点应该是有序的,但是按值非递减是什么意思?

已知一个带有头结点的单链表,设计算法将该单链表复制一个拷贝,急急急

已知一个带有头结点的单链表,设计算法将该单链表复制一个拷贝,急急急

c++ 单链表 单链表的附加头结点的i等于零吗?

单链表的附加头结点的i等于零吗?i的意思是第i个结点 单链表的附加头结点的i等于零吗?i的意思是第i个结点 单链表的附加头结点的i等于零吗?i的意思是第i个结点

有一个单链表L,假设结点值为整,怎么设计一个尽可能高效的算法将所有值小于0的结点移到所有值大于0的结点前面?

有一个单链表L,假设结点值为整,怎么设计一个尽可能高效的算法将所有值小于0的结点移到所有值大于0的结点前面?

单链表中的插入和删除

要求: (1)建立一个数据域存储1,3, 5,7的单链表; (2)将6插入到单链表中,使其仍保持递增的顺序; (3)将5删除。

在长度大于1的单循环链表中既无头结点也无头指针s为指向某个结点的指针编写算法删除结点*s的前驱结点

如链表中为(1,2,3,4,5),用户输入1,则结果应为(1,2,3,4)。这种情况实现不了,求大神解答 #include<iostream> using namespace std; typedef struct LNode { int data; struct LNode *next; }LNode,*LinkList; void begin(LinkList &l) { l=new LNode; l->next=NULL; } void Input(LinkList &l,int n) { LinkList r=l; cout<<"请输入数据"<<endl; for(int i=0;i<n;i++) { LinkList p=new LNode; cin>>p->data; p->next=l; r->next=p; r=p; } } void remove(LinkList &l,LinkList &s) { LinkList p=s; LinkList q; while(p->next->next!=s) { p=p->next; } q=p->next; p->next=s; free(q); } void show(LinkList &l) { LinkList r=l->next; while(r!=l) { cout<<r->data<<" "; r=r->next; } cout<<endl; } void main() { LinkList l,s; begin(l); begin(s); LinkList r=l; int n,m; cout<<"请输入数据个数"<<endl; cin>>n; Input(l,n); cout<<"请输入要删除数据的后一个数据"<<endl; cin>>m; for(int i=0;i<n;i++){ if(r->data!=m) { r=r->next; } s=r; } remove(l,s); show(l); }

单链表、单循环链表和双向链表概念就是混

对于单链表、单循环链表和双向链表,如果仅仅知道一个指向链表中某个节点链表的指针P,能否将P所指结点的数据元素与其确实存在的直接前驱?请对每一中链表作出判断,若可以,写出程序段;否则说明理由。 单链表和循环链表的结点结构为: 双向链表的结点结构为:

用C语言计算一个单链表的长度,单链表的定义如下:要求使用递归,不得出现循环。

用C语言计算一个单链表的长度,单链表的定义如下:要求使用递归,不得出现循环。

单链表除了遍历之外有什么比较好的方法查询其中一个结点?

如标题所言~ 单链表除了遍历之外有什么比较好的方法查询其中一个结点?

大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了

大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

ArrayList源码分析(入门篇)

ArrayList源码分析 前言: 写这篇博客的主要原因是,在我上一次参加千牵科技Java实习生面试时,有被面试官问到ArrayList为什么查找的速度较快,插入和删除的速度较慢?当时我回答得不好,很大的一部分原因是因为我没有阅读过ArrayList源码,虽然最后收到Offer了,但我拒绝了,打算寒假学得再深入些再广泛些,下学期开学后再去投递其他更好的公司。为了更加深入理解ArrayList,也为

我以为我学懂了数据结构,直到看了这个导图才发现,我错了

数据结构与算法思维导图

String s = new String(" a ") 到底产生几个对象?

老生常谈的一个梗,到2020了还在争论,你们一天天的,哎哎哎,我不是针对你一个,我是说在座的各位都是人才! 上图红色的这3个箭头,对于通过new产生一个字符串(”宜春”)时,会先去常量池中查找是否已经有了”宜春”对象,如果没有则在常量池中创建一个此字符串对象,然后堆中再创建一个常量池中此”宜春”对象的拷贝对象。 也就是说准确答案是产生了一个或两个对象,如果常量池中原来没有 ”宜春” ,就是两个。...

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

讲一个程序员如何副业月赚三万的真实故事

loonggg读完需要3分钟速读仅需 1 分钟大家好,我是你们的校长。我之前讲过,这年头,只要肯动脑,肯行动,程序员凭借自己的技术,赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...

上班一个月,后悔当初着急入职的选择了

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是HR所说那样,那个HR自...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

玩转springboot启动banner定义所得

最近接手了一个springboot项目,不是不熟悉这个框架,启动时打印的信息吸引了我。 这不是我熟悉的常用springboot的打印信息啊,我打开自己的项目: 还真是的,不用默认的感觉也挺高大上的。一时兴起,就去研究了一下源代码,还正是有些收获,稍后我会总结一下。正常情况下做为一个老程序员,是不会对这种小儿科感兴趣的,不就是一个控制台打印嘛。哈哈! 于是出于最初的好奇,研究了项目的源代码。看到

带了6个月的徒弟当了面试官,而身为高级工程师的我天天修Bug......

即将毕业的应届毕业生一枚,现在只拿到了两家offer,但最近听到一些消息,其中一个offer,我这个组据说客户很少,很有可能整组被裁掉。 想问大家: 如果我刚入职这个组就被裁了怎么办呢? 大家都是什么时候知道自己要被裁了的? 面试软技能指导: BQ/Project/Resume 试听内容: 除了刷题,还有哪些技能是拿到offer不可或缺的要素 如何提升面试软实力:简历, 行为面试,沟通能...

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

终于懂了TCP和UDP协议区别

终于懂了TCP和UDP协议区别

你打算用Java 8一辈子都不打算升级到Java 14,真香

我们程序员应该抱着尝鲜、猎奇的心态,否则就容易固步自封,技术停滞不前。

无代码时代来临,程序员如何保住饭碗?

编程语言层出不穷,从最初的机器语言到如今2500种以上的高级语言,程序员们大呼“学到头秃”。程序员一边面临编程语言不断推陈出新,一边面临由于许多代码已存在,程序员编写新应用程序时存在重复“搬砖”的现象。 无代码/低代码编程应运而生。无代码/低代码是一种创建应用的方法,它可以让开发者使用最少的编码知识来快速开发应用程序。开发者通过图形界面中,可视化建模来组装和配置应用程序。这样一来,开发者直...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

《经典算法案例》01-08:如何使用质数设计扫雷(Minesweeper)游戏

我们都玩过Windows操作系统中的经典游戏扫雷(Minesweeper),如果把质数当作一颗雷,那么,表格中红色的数字哪些是雷(质数)?您能找出多少个呢?文中用列表的方式罗列了10000以内的自然数、质数(素数),6的倍数等,方便大家观察质数的分布规律及特性,以便对算法求解有指导意义。另外,判断质数是初学算法,理解算法重要性的一个非常好的案例。

立即提问
相关内容推荐