十字链表存储图的代码写好了(代码如下),寻找两节点间的简单路径不会写。大佬帮我写一下C++代码,谢了 20C
 #include <iostream>  
#include <cstdio>  
#include <stdlib.h>  
#include <cstring>  
using namespace std;
#define MAX_VERTEX_NUM 20  
#define OVERFLOW -2  
#define OK 1  
typedef int Status;
typedef char VertexType[MAX_VERTEX_NUM];
typedef char InfoType;
//弧(边)的结构体  
typedef struct ArcBox
{
    int tailvex, headvex;                        //该弧的尾和头顶点的位置  
    struct ArcBox *hlink, *tlink;               //分别为弧头相同和弧尾相同的弧的链域  
    InfoType *info;                             //该弧的相关信息的指针  
}ArcBox;

//顶点的结构体  
typedef struct VexNode
{
    VertexType data;
    ArcBox *firstin, *firstout;  //分别指向该顶点的第一条入弧和出弧  
}VexNode;

//有向图的结构体  
typedef struct
{
    VexNode xlist[MAX_VERTEX_NUM];      //表头向量  
    int vexnum, arcnum;                 //有向图的当前顶点数和弧数  
}OLGraph;

int LocateVex(OLGraph &G, VertexType u)
{
    for (int i = 0; i < G.vexnum; ++i)
        if (strcmp(G.xlist[i].data, u) == 0)
            return i;
    return -1;
}

//构造有向图G;  
Status CreateDG(OLGraph &G)
{

    int i, j, k;
    printf("请输入有向图的顶点数以及弧数:\n");
    scanf("%d%d", &G.vexnum, &G.arcnum);
    printf("请输入%d个顶点的值,之间有空格隔开:\n", G.vexnum);
    for (i = 0; i<G.vexnum; ++i) //构造表头向量  
    {
        getchar();
        scanf("%s", G.xlist[i].data);  //输入顶点值  
        G.xlist[i].firstin = NULL;
        G.xlist[i].firstout = NULL;
    }

    VertexType v1, v2;
    ArcBox *p;
    printf("请依次输入%d条弧各自依附的两个顶点(输入格式:v1 v2)\n", G.arcnum);
    for (k = 0; k < G.arcnum; ++k)  //输入各弧并构造十字链表  
    {
        getchar();
        scanf("%s%s", v1, v2);
        i = LocateVex(G, v1);
        j = LocateVex(G, v2);
        p = (ArcBox *)malloc(sizeof(ArcBox));
        if (!p)
            exit(OVERFLOW);
        p->tailvex = i;
        p->headvex = j;
        p->hlink = G.xlist[j].firstin;
        p->tlink = G.xlist[i].firstout;
        p->info = NULL;
        G.xlist[j].firstin = G.xlist[i].firstout = p;  //完成在入弧和出弧链头的插入  
    }
    getchar();
    return OK;
}

void DisplayArc(OLGraph &G)
{
    ArcBox *p;
    for (int i = 0; i < G.vexnum; ++i)
    {
        p = G.xlist[i].firstout;
        while (p)
        {
            printf("<%s,%s> ", G.xlist[p->tailvex].data, G.xlist[p->headvex].data);
            p = p->tlink;
        }
    }
    printf("\n");
}


//顶点的度:入度+出度  
int VexDegree(OLGraph &G, VertexType v)
{

    int k = LocateVex(G, v);
    if (k<0)
        exit(OVERFLOW);
    int id = 0, od = 0;  //入度,出度  

    ArcBox *pin = G.xlist[k].firstin;
    ArcBox *pout = G.xlist[k].firstout;
    while (pin)  //求入度  
    {
        ++id;
        pin = pin->hlink;
    }

    while (pout)  //求出度  
    {
        ++od;
        pout = pout->tlink;
    }

    return id + od; //顶点的度  
}

1个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
十字链表存储图的代码写好了(代码如下),寻找两节点间的简单路径不会写。大佬帮我写一下C++代码,谢了

``` #include <iostream> #include <cstdio> #include <stdlib.h> #include <cstring> using namespace std; #define MAX_VERTEX_NUM 20 #define OVERFLOW -2 #define OK 1 typedef int Status; typedef char VertexType[MAX_VERTEX_NUM]; typedef char InfoType; //弧(边)的结构体 typedef struct ArcBox { int tailvex, headvex; //该弧的尾和头顶点的位置 struct ArcBox *hlink, *tlink; //分别为弧头相同和弧尾相同的弧的链域 InfoType *info; //该弧的相关信息的指针 }ArcBox; //顶点的结构体 typedef struct VexNode { VertexType data; ArcBox *firstin, *firstout; //分别指向该顶点的第一条入弧和出弧 }VexNode; //有向图的结构体 typedef struct { VexNode xlist[MAX_VERTEX_NUM]; //表头向量 int vexnum, arcnum; //有向图的当前顶点数和弧数 }OLGraph; int LocateVex(OLGraph &G, VertexType u) { for (int i = 0; i < G.vexnum; ++i) if (strcmp(G.xlist[i].data, u) == 0) return i; return -1; } //构造有向图G; Status CreateDG(OLGraph &G) { int i, j, k; printf("请输入有向图的顶点数以及弧数:\n"); scanf("%d%d", &G.vexnum, &G.arcnum); printf("请输入%d个顶点的值,之间有空格隔开:\n", G.vexnum); for (i = 0; i<G.vexnum; ++i) //构造表头向量 { getchar(); scanf("%s", G.xlist[i].data); //输入顶点值 G.xlist[i].firstin = NULL; G.xlist[i].firstout = NULL; } VertexType v1, v2; ArcBox *p; printf("请依次输入%d条弧各自依附的两个顶点(输入格式:v1 v2)\n", G.arcnum); for (k = 0; k < G.arcnum; ++k) //输入各弧并构造十字链表 { getchar(); scanf("%s%s", v1, v2); i = LocateVex(G, v1); j = LocateVex(G, v2); p = (ArcBox *)malloc(sizeof(ArcBox)); if (!p) exit(OVERFLOW); p->tailvex = i; p->headvex = j; p->hlink = G.xlist[j].firstin; p->tlink = G.xlist[i].firstout; p->info = NULL; G.xlist[j].firstin = G.xlist[i].firstout = p; //完成在入弧和出弧链头的插入 } getchar(); return OK; } void DisplayArc(OLGraph &G) { ArcBox *p; for (int i = 0; i < G.vexnum; ++i) { p = G.xlist[i].firstout; while (p) { printf("<%s,%s> ", G.xlist[p->tailvex].data, G.xlist[p->headvex].data); p = p->tlink; } } printf("\n"); } //顶点的度:入度+出度 int VexDegree(OLGraph &G, VertexType v) { int k = LocateVex(G, v); if (k<0) exit(OVERFLOW); int id = 0, od = 0; //入度,出度 ArcBox *pin = G.xlist[k].firstin; ArcBox *pout = G.xlist[k].firstout; while (pin) //求入度 { ++id; pin = pin->hlink; } while (pout) //求出度 { ++od; pout = pout->tlink; } return id + od; //顶点的度 } ```

十字链表问题。。。急

这个创建十字链表的函数,hp有什么用啊。。hp=p和这句前面那句,,都有点看不明白。。大神可不可以给详细解答下。。。我链表这边不太好。。。可不可以说详细点。。大感谢!!![图片](https://img-ask.csdn.net/upload/201708/17/1502939245_775434.jpg)

有关图中十字链表的问题

小弟刚刚看到图的十字链表,表示有点不明白为什么要这么复杂的数据结构,又要弧结点,又要顶点结点。 按照书本说的,假如就是邻接表和逆邻接表的结合,那为什么不在邻接表直接加个逆邻接表的指针呢?

用十字链表实现矩阵的A=A+B

C语言,希望能给出完整的源程序,在下感激不尽,希望哪位大神能够相助,在下感谢万分!

android中如何用代码画十字

android中用代码画十字===================================================================“+”

稀疏矩阵应用(加法、乘法、转置)

要求用C++编写 实现三元组,十字链表下的稀疏矩阵的加、转、乘的实现。 (1)稀疏矩阵的存储 (2)稀疏矩阵加法 (3)矩阵乘法 (4)矩阵转置 求各位大神指点!!!求源代码,最好有注释

求一个java 类型的 双直立插值算法放缩处理图片代码?

网上很多代码调用之后生成的图片 不是黑色的 就是放大后没什么效果

求代码:鼠标指针全屏十字线跟随,反色显示十字线

求一个完整的代码 鼠标指针移动的时候,全屏十字线【颜色:动态反色】跟随。 期待: (1)最好是可以**动态反色显示十字线**【与背影色反色的目的是能看清楚十字线的位置,不然经常看不清楚线在哪里】 (2)**十字线粗细**可以设置 (3)**不要过于占用CPU资源**,下载了个crosshair程序试了一下完全没有办法使用:(i)占用系统资源(非常卡顿),(ii)并且,在彩色浏览区里,无论设置什么颜色,几乎都看不清楚鼠标在哪里,而且十字线中心没有鼠标ICON的情况下,更加看不清楚。所以,非常期待任何背景色下都能动态反色显示十字线。 (4)要求类似(3):移动的时候要流畅,不卡顿不迟滞。 关于悬赏:我没有C币,但是,愿意悬赏人民币:100元 给第一个帮我实现以上四点要求的同学。我不经常在线,请与我联系 QQ:64882911。言出必践。万分感谢。

求各位大神帮我看看这个稀疏矩阵应用的C++代码

#include<stdio.h> #include<stdlib.h> #include<malloc.h> #define MAXSIZE 100 int num[100]; typedef struct OLNode{ int i,j; int e; struct OLNode *right,*down; }OLNode,*OLink; typedef struct { int mu,nu,tu; OLink *rhead,*chead; }CrossList; int CreateSMatix_OL(CrossList &M){ int i,j,e; OLink q; OLink p; printf("请输入稀疏矩阵的行数,列数,非零元素的个数:\n"); scanf("%d%d%d",&M.mu,&M.nu,&M.tu); M.rhead=(OLink *)malloc((M.mu+1)*sizeof(OLNode)); M.chead=(OLink *)malloc((M.nu+1)*sizeof(OLNode)); for( i=1; i<=M.mu; i++)M.rhead[i]=NULL; for( i=1; i<=M.nu; i++)M.chead[i]=NULL; printf("请输入元素的行 列 值。最后输入0 0 0为结束\n"); scanf("%d%d%d",&i,&j,&e); while(i!=0){ p=(OLink)malloc(sizeof(OLNode)); p->i=i; p->j=j; p->e=e; if(M.rhead[i]==NULL||M.rhead[i]->j>j){p->right=M.rhead[i]; M.rhead[i]=p; } else{ q=M.rhead[i]; while(q->right&&q->right->j<j)q=q->right; p->right=q->right; q->right=p; } if(M.chead[j]==NULL||M.chead[j]->i>i){p->down=M.chead[j]; M.chead[j]=p; } else{ q=M.chead[j]; while(q->down&&q->down->i<i)q=q->down; p->down=q->down; q->down=p; } scanf("%d%d%d",&i,&j,&e); } return 1; }//创建十字链表 int Compare(int a1,int b1,int a2,int b2){ if(a1>a2)return 1; else if(a1<a2)return -1; else if(b1>b2)return 1; if(b1<b2)return -1; else return 0; } int SMatrix_ADD(CrossList *A,CrossList *B){ OLNode *pa,*pb,*pre,*p,*cp[100]; int i,j,t; t=A->tu+B->tu; for(j=1; j<=A->nu; j++)cp[j]=A->chead[j]; for(i=1; i<=A->mu; i++){ pa=A->rhead[i]; pb=B->rhead[i]; pre=NULL; while(pb) { if(pa==NULL||pa->j>pb->j) { p=(OLink)malloc(sizeof(OLNode)); if(!pre)A->rhead[i]=p; else pre->right=p; p->right=pa; pre=p; p->i=i; p->j=pb->j; p->e=pb->e; if(!A->chead[p->j]){ A->chead[p->j]=cp[p->j]=p; p->down=NULL; } else{ cp[p->j]->down=p; cp[p->j]=p; } pb=pb->right; } else if(pa->j<pb->j){pre=pa; pa=pa->right; } else if(pa->e+pb->e) { t--; pa->e+=pb->e; pre=pa; pa=pa->right; pb=pb->right; } else { t=t-2; if(!pre)A->rhead[i]=pa->right; else pre->right=pa->right; p=pa; pa=pa->right; if(A->chead[p->j]==p)A->chead[p->j]=cp[p->j]=p->down; else cp[p->j]->down=p->down; free(p); pb=pb->right; } } } A->mu=A->mu>B->mu?A->mu:B->mu; A->nu=A->nu>B->nu?A->nu:B->nu; return 1; } //十字链表相加 int ShowMAtrix(CrossList *A){ int col; OLink p; for(col=1;col<=A->mu;col++) if(A->rhead[col]){p=A->rhead[col]; while(p){printf("%3d%3d%3d\n",p->i,p->j,p->e); p=p->right; } } return 1; } //十字链表显示 int MultSMatrix_OL(CrossList M, CrossList N, CrossList &Q) { int i, j, e; //中间变量 OLink p0, q0, p, pl, pla; //中间变量 //检查稀疏矩阵M的列数和N的行数是否对应相等 if(M.nu != N.mu) { printf ( "稀疏矩阵A的列数和B的行数不相等,不能相乘。\n" ); return 0; } Q.mu = M.mu, Q.nu = N.nu, Q.tu = 0; if(!(Q.rhead = (OLink *)malloc((Q.mu + 1) * sizeof(OLink)))) exit(-2); if(!(Q.chead = (OLink *)malloc((Q.nu + 1) * sizeof(OLink)))) exit(-2); for(i = 1; i <= Q.mu; i++) Q.rhead[i] = NULL; for(i = 1; i <= Q.nu; i++) Q.chead[i] = NULL; //稀疏矩阵相乘 for(i =1; i <= Q.mu; i++) for(j = 1; j <= Q.nu; j++) { p0 = M.rhead[i], q0 = N.chead[j], e = 0; while(p0&&q0) { if( p0->j > q0->i) q0 = q0->down; //M的列大于N的行,则N的列指针后移 if(p0->j < q0->i) p0 = p0->right; //M的列小于N的行,则M的行指针右移 else { e += p0->e * q0->e; q0 = q0->down, p0 = p0->right; //移动指针 } } if(e)//乘积不为0 { if(!(p = (OLink)malloc(sizeof(OLNode)))) exit(-2); Q.tu++; //非零元素增加 p->i = i, p->j = j, p->e = e, p->right = NULL, p->down = NULL; //赋值,指针后移 //将p插入十字链表 //行插入 if(Q.rhead[i] == NULL) //若p为该行的第1个结点 Q.rhead[i] = pl = p; //p插在该行的表头且pl指向p(该行的最后一个结点) else pl->right = p, pl = p; //插在pl所指结点之后,pl右移 //列插入 if(Q.chead[j] == NULL) //若p为该列的第一个点 Q.chead[j] = p; //该列的表头指向p else { pla = Q.chead[j]; //pla指向j行的第1个结点 while(pla->down) pla = pla->down; //pla指向j行最后一个结点 pla->down = p; } } } return 1; } }}//十字链表相乘 void TurnSMatrix_OL(CrossList &M) { int col,row; OLink p,q; for(col=1; col<=M.mu; col++) { q=p=M.rhead[col]; while(q){ row=p->i; p->i=p->j; p->j=row; q=p->right; p->right=p->down; p->down=q; } } }//十字链表转置 int DestroySMatrix_OL(CrossList &M) { int i; //中间变量 OLink p, q; //中间变量 if(!M.rhead || !M.chead) return 1; //M不存在 else {//M存在 if(M.chead)//所有列链表头指针置为空 for(i = 1; i <= M.nu; i++) M.chead[i] = NULL; if(M.rhead)//按行释放节点 for(i = 1; i <= M.mu; i++) { p = M.rhead[i]; while(p) { q = p, p = p->right; free(q); } } //释放行和列链表头指针指向基址 free(M.rhead); free(M.chead); //返回 return 1; } }//十字链表销毁 int main(){ int n,i; //TSMatrix M,T,S; CrossList MM,TT,SS; printf("请你选择操作:\n1:创建稀疏矩阵。\n2:退出\n(1|2):"); scanf("%d",&n); switch(n){ case 1:{CreateSMatix_OL(MM); ShowMAtrix(&MM); printf("已经选择创建稀疏矩阵,请选择操作\n 1:稀疏矩阵转置\n 2:稀疏矩阵相加\n 3:稀疏矩阵相乘\n 4:退出\n(1|2|3|4):"); scanf("%d",&i); switch(i){ case 1: TurnSMatrix_OL(MM); ShowMAtrix(&MM); break; case 2: printf("请你输入另一个稀疏矩阵:"); CreateSMatix_OL(TT); SMatrix_ADD(&MM,&TT); ShowMAtrix(&MM); break; case 3:printf("请你输入另一个稀疏矩阵:"); CreateSMatix_OL(TT); MultSMatrix_OL(MM,TT,SS); ShowMAtrix(&SS); break; case 4:exit(0); }}; break; case 2:exit(0); default :printf("erorr"); } } 编译没问题 但就是输出不了。有可能是十字链表显示那段代码出错

求大神~~ c free()结构体指针出错

本人菜鸟一枚,调试程序时发现下面的程序只要用free()来释放结构体指针就出错,百思不得其解,望大师指正!非常感谢啦! 注:本人用的是VC6.0。自己写的C程序,私心揣测难道是结构体指针特殊一点,或者我释放的方式不对~ 补充:C-Free 5.0上选择mingw5调试则没有问题!到底哪里有问题? ![图片说明](https://img-ask.csdn.net/upload/201604/15/1460689437_553769.jpg) ``` #include <stdio.h> #include <stdlib.h> #include <malloc.h> struct Particle{ int age; double money; double famly[4]; };//定义一个结构体变量 int main() { int PM=5,i,j; double *ptr=(double *)calloc(PM,sizeof(double)); struct Particle *swarm=(struct Particle *)calloc(PM,sizeof(struct Particle)); if(swarm==NULL) {printf("给swarm申请内存失败!\n"); exit(1);//异常退出 } else printf("给swarm申请内存成功!\n"); for(i=0;i<PM;i++,swarm++) //对结构体指针赋值并输出 { swarm->age=2*i; swarm->money=3*i+0.55; printf("swarm[%d]: age=%d,money=%lf ",i,swarm->age,swarm->money); for(j=0;j<4;j++) {swarm->famly[j]=1.5*j;printf("%lf ,",swarm->famly[j]);} printf("\n"); } printf("\n");//对double型数组赋值并输出 for(i=0;i<PM;i++) printf("%lf\n",ptr[i]+i*0.5); printf("\n"); free(ptr);ptr=0; //free(swarm);swarm=NULL; //为什么上面语句一添加程序运行就出问题呢??!!而free(ptr)就没问题? printf("\n\n"); } ```

这是一个关于数据结构图的问题

邻接表和十字链表,有什么区别呢?他们的应用场合是什么呢? 邻接表和十字链表,有什么区别呢?他们的应用场合是什么呢?

十字交叉双向循环链表如何解决这个作为匹配的算法,怎么C语言实现的呢?

Problem Description A group of K friends is going to see a movie. However, they are too late to get good tickets, so they are looking for a good way to sit all nearby. Since they are all science students, they decided to come up with an optimization problem instead of going on with informal arguments to decide which tickets to buy. The movie theater has R rows of C seats each, and they can see a map with the currently available seats marked. They decided that seating close to each other is all that matters, even if that means seating in the front row where the screen is so big it’s impossible to see it all at once. In order to have a formal criteria, they thought they would buy seats in order to minimize the extension of their group. The extension is defined as the area of the smallest rectangle with sides parallel to the seats that contains all bought seats. The area of a rectangle is the number of seats contained in it. They’ve taken out a laptop and pointed at you to help them find those desired seats. Input Each test case will consist on several lines. The first line will contain three positive integers R, C and K as explained above (1 <= R,C <= 300, 1 <= K <= R × C). The next R lines will contain exactly C characters each. The j-th character of the i-th line will be ‘X’ if the j-th seat on the i-th row is taken or ‘.’ if it is available. There will always be at least K available seats in total. Input is terminated with R = C = K = 0. Output For each test case, output a single line containing the minimum extension the group can have. Sample Input 3 5 5 ...XX .X.XX XX... 5 6 6 ..X.X. .XXX.. .XX.X. .XXX.X .XX.XX 0 0 0 Sample Output 6 9

算法题。已知两个平行四边形各自的四个点,求这两个平行四边形是否有交集!用代码如何实现?

算法题。已知两个平行四边形各自的四个点,求这两个平行四边形是否有交集!用代码如何实现?

用这个MATLAB代码生成十字阵时,如何把我需要的阵元数,信号频率等信息加进去

如题,求问这个代码中还能加入阵元数,频率,声速等信息吗?如何添加? ``` close all clear all N = 19; % M = 10; [ux,uy] = meshgrid(-1:1/100:1); psix = pi*ux; psiy = pi*uy; Beam1 = sinc(1/pi*N*psix/2)./sinc(1/pi*psix/2); Beam2= sinc(1/pi*N*psiy/2)./sinc(1/pi*psiy/2); Beam=Beam1+Beam2; Beam = abs(Beam)/max(max(abs(Beam))); theta_x=uy*90; fai_x=ux*180; mesh(fai_x,theta_x,Beam); xlabel('x','Fontsize',12); ylabel('y','Fontsize',12); zlabel('波束图','Fontsize',12); title('Response of planar array, N=M=10, dx=dy=\lambda/2, uniform weight') ``` 谢谢各位大佬

如何使用opencv提取下面这幅图片的十字线中心坐标

![图片说明](https://img-ask.csdn.net/upload/201804/08/1523160017_454374.jpg)

数据结构程序设计上机题

实验六 稀疏矩阵 实验目的: 1. 理解稀疏矩阵的设计目的和设计思想; 2.掌握稀疏矩阵存储结构和基本操作的实现方法; 3.思考稀疏矩阵实现数学运算的方法。 实验内容: 实现稀疏矩阵,并为其设计演示系统。 实现要求: 存储结构采用三元组顺序表或十字链表,基本操作包括初始化、销毁、转置和矩阵打印。 稀疏矩阵的输入形式采用三元组表示,而运算结果以通常的阵列形式列出。 主程序用于验证各基本操作的正确性; 演示系统以用户和计算机对话的方式执行,实现过程为: 循环提示用户选择“命令”,主程序执行相应操作; 直至用户选择“退出”操作; 系统提供给用户的命令包括:t(转置)、a(相加)、m(相乘)、x(退出)。

TEEChart中十字光标的坐标显示问题

我在做数计采集过程中,把采集到的数计在TeeChart的坐标轴中以曲线的方式显示出来。 并且添加了十字光标,我现在想把十字光标的坐标信息显示出来,效果图如下图所示:![图片说明](https://img-ask.csdn.net/upload/201504/26/1430038606_505510.png) 如图所示,我希望在静态文本框中显示十字光标的坐标,但不知道怎么做。 请教社区的牛人们,希望帮忙解答一下! 谢谢!!

VS用C语言写库文件.h和解释.h的.c或者叫.cpp?

我想用VS2013写十字链表,然后想学着怎么把函数声明都放到头文件里,然后我看比如Arduino的一些库里面就是.h和.cpp,一个声明一个(是不是叫定义函数呢。。我也不清楚) 。然后我太菜鸡了。。不知道如果我用.h和.c来写其中.c的写法会不会和.cpp不同? 还有VS的项目的.h和.c应该都是放在库文件这个夹子里面的吧? 然后调用这个库的main函数是不是写在源文件的夹子里?

基于c++与opencv实现图像识别定位?

1.具体需求是通过软件处理拍摄的图像,图像中有两个作为标记的十字(或二维码),要求用算法识别出两个标记,并且计算出两个标记的坐标,之间的角度和距离等位置信息,此时遮挡图片中的一个标记,要求根据之前计算出的位置信息,以另一个没有被去除的标记为坐标系计算出被去除标记的精确位置。 环境是vs+opencv。 2.已经完成了模板匹配部分,能够识别图像中的标记,但在计算两个标记之间的位置信息时遇到困难,希望能够得到大佬们的帮助。(具体可加q3455847217,不胜感激)

OpenGL画十字线相关的问题

我用OpenGL画了一个长方体,可以上下左右移动,现在为了好看,要在屏幕中间画一个小十字架,这个十字架是固定在屏幕中间的,不会随着长方体移动,用的是lwjgl写的,应该怎么实现呢?

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

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

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

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

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

数据结构与算法思维导图

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

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

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

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

Linux面试题(2020最新版)

文章目录Linux 概述什么是LinuxUnix和Linux有什么区别?什么是 Linux 内核?Linux的基本组件是什么?Linux 的体系结构BASH和DOS之间的基本区别是什么?Linux 开机启动过程?Linux系统缺省的运行级别?Linux 使用的进程间通信方式?Linux 有哪些系统日志文件?Linux系统安装多个桌面环境有帮助吗?什么是交换空间?什么是root帐户什么是LILO?什...

将一个接口响应时间从2s优化到 200ms以内的一个案例

一、背景 在开发联调阶段发现一个接口的响应时间特别长,经常超时,囧… 本文讲讲是如何定位到性能瓶颈以及修改的思路,将该接口从 2 s 左右优化到 200ms 以内 。 二、步骤 2.1 定位 定位性能瓶颈有两个思路,一个是通过工具去监控,一个是通过经验去猜想。 2.1.1 工具监控 就工具而言,推荐使用 arthas ,用到的是 trace 命令 具体安装步骤很简单,大家自行研究。 我的使用步骤是...

学历低,无法胜任工作,大佬告诉你应该怎么做

微信上收到一位读者小涛的留言,大致的意思是自己只有高中学历,经过培训后找到了一份工作,但很难胜任,考虑要不要辞职找一份他能力可以胜任的实习工作。下面是他留言的一部分内容: 二哥,我是 2016 年高中毕业的,考上了大学但没去成,主要是因为当时家里经济条件不太允许。 打工了三年后想学一门技术,就去培训了。培训的学校比较垃圾,现在非常后悔没去正规一点的机构培训。 去年 11 月份来北京找到了一份工...

JVM内存结构和Java内存模型别再傻傻分不清了

JVM内存结构和Java内存模型都是面试的热点问题,名字看感觉都差不多,网上有些博客也都把这两个概念混着用,实际上他们之间差别还是挺大的。 通俗点说,JVM内存结构是与JVM的内部存储结构相关,而Java内存模型是与多线程编程相关,本文针对这两个总是被混用的概念展开讲解。 JVM内存结构 JVM构成 说到JVM内存结构,就不会只是说内存结构的5个分区,而是会延展到整个JVM相关的问题,所以先了解下

和黑客斗争的 6 天!

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

Google 与微软的浏览器之争

浏览器再现“神仙打架”。整理 | 屠敏头图 | CSDN 下载自东方 IC出品 | CSDN(ID:CSDNnews)从 IE 到 Chrome,再从 Chrome 到 Edge,微软与...

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

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

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

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

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

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

搜狗输入法也在挑战国人的智商!

故事总是一个接着一个到来...上周写完《鲁大师已经彻底沦为一款垃圾流氓软件!》这篇文章之后,鲁大师的市场工作人员就找到了我,希望把这篇文章删除掉。经过一番沟通我先把这篇文章从公号中删除了...

85后蒋凡:28岁实现财务自由、34岁成为阿里万亿电商帝国双掌门,他的人生底层逻辑是什么?...

蒋凡是何许人也? 2017年12月27日,在入职4年时间里,蒋凡开挂般坐上了淘宝总裁位置。 为此,时任阿里CEO张勇在任命书中力赞: 蒋凡加入阿里,始终保持创业者的冲劲,有敏锐的...

总结了 150 余个神奇网站,你不来瞅瞅吗?

原博客再更新,可能就没了,之后将持续更新本篇博客。

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

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

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

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

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

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

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

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

离职半年了,老东家又发 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协议区别

立即提问
相关内容推荐