数据结构双向链表中的问题~ 1C

设指针变量p指向双向链表中结点A,指针变量q指向被插入结点B,要求给出在结点A的后面插入结点B的操作序列(设双向链表中结点的两个指针域分别为llink和rlink)
图片说明各位大神~初学者,求正确答案,和详细分析,图片说明

1个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
高分悬赏:Java语言数据结构怎么实现双向链表的冒泡排序呢
高分悬赏:Java语言数据结构怎么实现双向链表的冒泡排序呢 高分悬赏:Java语言数据结构怎么实现双向链表的冒泡排序呢
数据结构双向链表指针属性指向的问题
最近在看《零基础学java》,在数据结构中看到双向链表,说每个链表元素都有两个指针属性,一个是previous指向上一个元素本身,另一个是next执行下一个元素本身。可双向链表的结构图却是相反的。问具体是什么情况
数据结构,在一个双向链表中删除一个元素的时间复杂度怎么计算?
数据结构,在一个双向链表中删除一个元素的时间复杂度怎么计算?
单链表、单循环链表和双向链表概念就是混
对于单链表、单循环链表和双向链表,如果仅仅知道一个指向链表中某个节点链表的指针P,能否将P所指结点的数据元素与其确实存在的直接前驱?请对每一中链表作出判断,若可以,写出程序段;否则说明理由。 单链表和循环链表的结点结构为: 双向链表的结点结构为:
ARM开发中,用C语言 实现双向链表
各位前辈 你们好! 如题,我在ARM开发中,需要用到双向链表来管理接受到的数据。 我对双向链表不是很理解,在实际编程的时候遇到一些问题。 希望得到各位的帮助。 我本来打算用数组来做的。但是发现添加数据和删除数据都比较麻烦。 最后决定用双向链表来完成。 使用双向链表的目的 1,链表可以接受不超过64个的数据(结构体) 2,在链表中查询数据ID,可以进行添加和删除还有覆盖相同ID的数据 3,遍历链表中的数据ID,调用数据信息。 项目管理是一个外国人,我看他用链表不用malloc和free,我也想按照他的写法去找列子, 但是国内的列子都是有带malloc和free的。 因为时限快到了,我又学艺不精,所以向各位求教相应的信息或者实现的代码。 谢谢!
双向链表做学生管理系统?怎么实现???
双向链表做学生管理系统?怎么实现??跪求,各位大神指点迷津,谢谢
各位大神求解!如何利用C++实现双向链表的相关操作
利用尾插法建立双向链表和遍历双向链表,判断双向链表是否对称。
将两个递增的双向链表合并问题
将两个排好序的双向链表合并成一个,不允许有重复数据,链表1为1 2 3 4 6 链表2为5 6 8 9 10,合并后为1 2 3 4 6 8 9 10缺少了5,麻烦各位看一下是为什么啊? ``` // shiyan.cpp : 定义控制台应用程序的入口点。 // /* C program to insetail nodes in doubly linked list such that list remains in ascending order on printing from left to right */ #include "stdafx.h" #include <iostream> using namespace std; #include<stdio.h> #include<stdlib.h> #include<fstream> // A linked list node struct Node { int data; struct Node *prior; struct Node *next; }; // Function to insetail new node void nodeInsetail(struct Node **head, struct Node **tail,int key) { struct Node *p = new Node; p->data = key; p->next = NULL; // If first node to be insetailed in doubly linked list if ((*head) == NULL) { (*head) = p; (*tail) = p; (*head)->prior = NULL; return; } // If node to be insetailed has value less than first node if ((p->data) < ((*head)->data)) { p->prior= NULL; (*head)->prior = p; p->next = (*head); (*head) = p; return; } // If node to be insetailed has value more than last node if ((p->data) > ((*tail)->data)) { p->prior = (*tail); (*tail)->next = p; (*tail) = p; return; } // Find the node before which we need to insert p. struct Node *temp = new Node; temp = (*head)->next; while ((temp->data) < (p->data)) temp = temp->next; // Insert new node before temp (temp->prior)->next = p; p->prior= temp->prior; temp->prior = p; p->next = temp; } // Function to print nodes in from left to right void printList(struct Node *temp) { while (temp != NULL) { printf("%d ", temp->data); temp = temp->next; } } // Driver program to test above functions struct Node *head1=NULL; struct Node *tail1=NULL; struct Node *head2=NULL; struct Node *tail2=NULL; int _tmain(int argc, _TCHAR* argv[]) { int num[10]; int datalen=0; ifstream file("linklist.txt"); while( ! file.eof() ) file>>num[datalen++]; file.close(); for(int i=0;i<5;i++) { nodeInsetail(&head1, &tail1,num[i]); } printf("Doubly linked list1 is:"); printList(head1); printf("\n"); for(int j=5;j<10;j++) { nodeInsetail(&head2, &tail2,num[j]); } printf("Doubly linked list2 is:"); printList(head2); printf("\n"); Node *phead =head1;//最终返回的头数据节点 Node *p=head1->next;//p循环的是链表1 Node *q=head2;//q循环的是链表2 if(p->data > q->data) { phead = head2; p = head2->next; q = head1; } Node* s=phead;//记录新链表的最后一个节点,方便下一次接上新节点 while(p!=NULL && q!=NULL) { if(p->data < q->data) { s->next = p; p->prior=s; p = p->next; s = s->next; } else if(p->data = q->data) { s->next= p; p->prior=s; p=p->next; Node *x=q->next;//备用元素指向 free(q); q=x; } else if(p->data > q->data) { s->next = q; q->prior=s; q = q->next; s = s->next; } } if(p == NULL)//链表1先遍历完,说明另一链表还有数据得接过来 { s->next = q; q->prior=s; } if(q == NULL)//链表2先遍历完,因为此时主链表的结构已经发生变化,所以仍需拼接过来 { s->next = p; p->prior=s; } while(phead) { printf("%d ",phead->data); phead=phead->next; } return 0; } ``` ![图片说明](https://img-ask.csdn.net/upload/201912/11/1576048566_174264.png)
【小白】数据结构链表插入结点时左右连接顺序问题
在一个双向链表中,p是中间某个结点,,在p后插入s的语句序列为什么不可以调换顺序?比如图中的1 2两句调换位置会有什么问题?![图片](https://img-ask.csdn.net/upload/201510/27/1445912686_183105.jpg)
利用双向链表和反三角的展开式高精度求π
要求利用c语言 利用双向链表和反三角的展开式高精度求π 用户输入一个整数n 高精度计算到小数点后的第n位 利用x=1/2时候 arcsinx=π/6求解 可以精确到小数点后500位 例如 5 3.14159 数据结构的 急求
关于双向链表的问题,小白求指教!!!!
每次一到prev的地方就显示发生冲突,无法再执行,这是为什么啊?? 但是把prev一去掉就好了 这是我的头文件 ``` #include<iostream> #ifndef DLIST #define DLIST using namespace std; typedef int ElementType; class DList { private: class Node { public: ElementType data; Node *prev;//前驱 Node *next;//后驱 Node() :next(NULL),prev(NULL) {} Node(ElementType dataValue,Node *Prev=NULL,Node *Next=NULL) :data(dataValue),next(Next),prev(Prev) {} }; typedef Node *NodePointer; public: DList();//构造函数 DList(const DList & origList);//复制构造函数 ~DList();//析构函数 const DList & operator=(const DList & rightSide);//赋值运算符 bool DList::empty();//判空 void insert(ElementType dataVal,int index);//插入函数 void erase(int index);//删除函数 int search(ElementType datVal);//查找函数 void display(ostream & out);//遍历 private: NodePointer first;//第一个节点 NodePointer last;//最后一个节点 int mySize; }; ostream & operator<<(ostream & out,DList & aList);//输出操作符 #endif ``` 这是CPP文件 ``` #include"DList.h" #include<iostream> using namespace std; //构造函数定义 DList::DList() :first(NULL),last(NULL),mySize(0) {} //复制构造函数的定义 DList::DList(const DList & origList) { mySize=origList.mySize; if(mySize==0) return; DList::NodePointer origPtr,lastPtr; first=new Node(origList.first->data);//复制第一个节点 lastPtr=first; origPtr=origList.first->next; //每次一到有prev的地方就无法执行了 origPtr->prev=lastPtr; while(origPtr!=0) { lastPtr->next=new Node(origPtr->data); origPtr=origPtr->next; lastPtr=lastPtr->next; //每次一到有prev的地方就无法执行了 origPtr->prev=lastPtr; } last=origPtr; } //析构函数的定义 DList::~DList() { DList::NodePointer pre=first,ptr; if(!empty()) { for(int i=1;i<mySize;i++) { ptr=pre->next; delete pre; pre=ptr; } } } //判空的定义 bool DList::empty() { return mySize==0?true:false; } //赋值运算符的定义 const DList & DList::operator=(const DList & rightSide) { mySize=rightSide.mySize; if(mySize==0) return *this; if(this != &rightSide) { this->~DList(); first=NULL; last=NULL; DList::NodePointer origPtr,lastPtr; first=new Node(rightSide.first->data);//复制第一个节点 lastPtr=first; origPtr=rightSide.first->next; //每次一到有prev的地方就无法执行了 origPtr->prev=lastPtr; while(origPtr!=0) { lastPtr->next=new Node(origPtr->data); origPtr=origPtr->next; lastPtr=lastPtr->next; } last=origPtr; } return *this; } //插入函数的定义 void DList::insert(ElementType dataVal,int index) { if(index<0||index>mySize) { cerr<<"越界!"<<index<<endl; return; } mySize++; DList::NodePointer newPtr=new Node(dataVal),predPtr=first; if(index==0) { newPtr->next=first; first=newPtr; first->next->prev=newPtr; } else if(index==mySize) { last->next=newPtr; //每次一到有prev的地方就无法执行了 newPtr->prev=last; last=newPtr; } else { for(int i=1;i<index;i++) predPtr=predPtr->next; newPtr->next=predPtr->next; //每次一到有prev的地方就无法执行了 newPtr->prev=predPtr; predPtr->next->prev=newPtr; predPtr->next=newPtr; } } //删除函数的定义 void DList::erase(int index) { if(index<0||index>=mySize) { cerr<<"越界!"<<index<<endl; return; } mySize--; DList::NodePointer ptr,predPtr=first; if(index==0) { ptr=first; first=first->next; //每次一到有prev的地方就无法执行了 first->prev=NULL; delete ptr; } else if(index==mySize) { ptr=last; //每次一到有prev的地方就无法执行了 last=last->prev; last->next=NULL; delete ptr; } else { for(int i=1;i<index;i++) predPtr=predPtr->next; ptr=predPtr->next; predPtr->next=ptr->next; //每次一到有prev的地方就无法执行了 ptr->next->prev=predPtr; delete ptr; } } //输出操作符的定义 ostream&operator<<(ostream&out,DList & aList) { aList.display(out); return out; } //遍历的定义 void DList::display(ostream & out) { DList::NodePointer ptr=first; cout<<"正序遍历链表:"<<endl; while(ptr!=NULL) { cout<<ptr->data<<" "; ptr=ptr->next; } cout<<endl; cout<<"反序遍历链表:"<<endl; DList::NodePointer Ptr=last; while(ptr!=NULL) { cout<<Ptr->data<<" "; Ptr=Ptr->next; } cout<<endl; } //查找的定义 int DList::search(ElementType datVal) { int pos=1;//从链首开始 DList::NodePointer searchPtr=first; while(searchPtr!=NULL) { if(searchPtr->data==datVal) cout<<"所查找的数据在第 "<<pos<<" 个节点."<<endl; searchPtr=searchPtr->next; pos++; } cout<<"无法找到数据!"<<endl; return -1; } int main() { cout<<"构建空链表"<<endl; DList list; cout<<"判空"<<endl; cout<<boolalpha<<list.empty()<<endl; int sum; cout<<"请输入链表的长度:"; cin>>sum; for(int i=0;i<sum;i++) list.insert(i,i); cout<<"现有链表: "<<list<<endl; int data,pos; cout<<"请输入要插入的数: "; cin>>data; cout<<"请输入要插入的位置: "; cin>>pos; list.insert(data,pos-1); cout<<"输出链表: "<<endl; cout<<list<<endl; int Pos; cout<<"要删除第几个节点; "; cin>>Pos; list.erase(Pos-1); cout<<list<<endl; cout<<"赋值"<<endl; DList mylist; mylist=list; cout<<mylist<<endl; cout<<"复制"<<endl; DList ch(mylist); cout<<ch<<endl; system("pause"); return 0; } ```
一道简单的数据结构题,环形链表问题,不知道哪里出了问题?
编程新人,请大神指教! 题目: 构造一个的环形双向链表,节点中存储的值为正整数,用这个链表进行删除操作。(链表中的元素均不超过232−1​) Input 多行输入,从第一行开始,每行一个正整数代表链表中的元素,直到遇到−1,之后每行一个正整数x,代表要删除的元素,若删除的元素在链表中存在,则将链表中所有的x全部删去,若不存在,则输出-1,输入再次遇到−1结束,最后将链表中剩余的元素输出 Output 输出若干行,每行若干个整数 对于每个要删除的元素,若删除失败,输出-1,最后输出链表的剩余元素 Examples Input 5 1 1 3 2 5 4 3 3 4 -1 3 2 6 -1 Output -1 5 1 1 5 4 4 Note 删除成功时不需要给出任何信息 删除失败时输出 -1 只需在最后输出链表元素,空格分隔 -------------------------------------------- 我的代码: #include <stdio.h> #include <stdlib.h> #include <malloc.h> typedef struct node { int data; struct node *qian,*hou; } NODE; int delete_cycle(NODE*head,int x) { NODE *p; p=head->hou; while((p->data!=x)&&(p!=head)) p=p->hou; if(p==head) return -1; else{ p->qian->hou=p->hou; p->hou->qian=p->qian; free(p); return 0;} } int main() { int x; NODE *head,*p,*q; head=(NODE *)malloc(sizeof(NODE));//biaotou scanf("%d",&x); if(x!=-1) { q=(NODE *)malloc(sizeof(NODE)); q->data=x; head->hou=q; q->qian=head; p=q; } else { head->data=-1; head->hou=head; head->qian=head; } getchar(); scanf("%d",&x); while(x!=-1) { q=(NODE *)malloc(sizeof(NODE)); q->data=x; p->hou=q; q->qian=p; p=q; scanf("%d",&x); } //chuxian -1 p->hou=head; //----------------------finished creating int y,k; scanf("%d",&y); while(y!=-1) { k=delete_cycle(head,x); if(k==-1) printf("-1\n"); scanf("%d",&y); } NODE *pr; pr=head->hou; do { printf("%d ",pr->data); pr=pr->hou; }while(pr!=head); } 目前问题是删除总是不成功,求大神指教!
如何用freelist带头的双链表实现多项式加法并排序(C++)
1. 编写使用freelist 的带头、尾结点的双向链表类的定义,实现双向链表的基本操作。 2. 利用双向链表实现2个一元稀疏多项式的加法运算,运算结果得到的链表要求按照指数升序有序,并遍历输出指数升序、指数降序的多项式。
树形的存储结构和双向有序链表的存储结构有什么不同呢?各有什么优势呢?
在做数据检索技术研究的时候,经常会遇到是用树形结构存储索引还是使用线性结构存储。不知道二者有什么不同,各有什么优势以及各自的适用场合。敬请各位赐教,谢谢。
关于头插入法建立双向链表
//还没实现 #include<stdio.h> #include<malloc.h> #include<stdlib.h> #define OK 1 typedef int elemtype; typedef int states; typedef struct DuLNode{ elemtype data; struct DuLNode *prior; struct DuLNode *next; }DuLNode,*DuLinkList; states create(DuLinkList &L){ DuLinkList p; L = (DuLinkList)malloc(sizeof(DuLNode)); L->next = NULL; L->prior = NULL; printf("please input the length of list:\n"); int n; scanf("%d",&n); for (int i = n; i > 0; i--){ p = (DuLinkList)malloc(sizeof(DuLNode)); printf("please input data of element No.%d\n", i); scanf("%d", &p->data); if (L->next = NULL){ L->next = p; p->prior = L; p->next = NULL; } else{ p->next = L->next; p->prior = L; L->next->prior = p; L->next = p; } } return OK; } void print(DuLinkList L){ DuLinkList p; p = L->next; printf("the linklist is like this:\n"); while (p){ printf("\t%d", p->data); p = p->next; } printf("\n"); } void main(){ DuLinkList L; create(L); print(L); system("pause"); } 实在不造哪里不对了。。。求助大神啊感激不尽!!! ``` ``` ``` ``` ``` ```
数据结构线性表求助,数据结构萨尼书上的
编写一个带有头节点的双向循环链表,然后笔写一个非成员函数spilt(a,b)目的是生成两个扩展链表a b ,a中包含c 中索引为奇数的元素,b包含剩余元素,此方法不能改变
JAVA,VECTOR实现指定位置插入元素,时间复杂度为O(1)
不论是用array还是双向链表实现vector,在指定元素后面插入一个新元素都需要O(N)的时间复杂度,有没有一种数据结构,能够使这个操作的时间复杂度是O(1)?
求解一个数据结构问题,希望用c++实现
题目是这样的: 设计一个算法,改造一个带头节点的双向链表,所有节点的原有次序保持在各个节点的rLink域中,并利用lLink域把所有节点按照从小到大的顺序链接起来。
用双向链表制作学生成绩管理系统,从文件下载记录输出乱码,排序没有显示结果?
``` #include<stdio.h.> #include<string.h> #include<malloc.h> #include<stdlib.h> typedef struct student{ int num; char name[10]; int math; int Chinese; int English; int total; }stu; /*建立学生成绩信息结构体;*/ typedef struct dlnode { stu data; struct dlnode *prior; struct dlnode *next; }dnode; /*建立双向链表结构体;*/ dnode *head; void enter(void)//输入学生成绩 { dnode *p,*rear; char flag='Y'; head=(dnode *)malloc(sizeof(dnode)); rear=head; head->next=head; head->prior=head; /*建立双链表空头节点;*/ while(flag=='Y'||flag=='y') { p=(dnode *)malloc(sizeof(dnode)); printf("学号:"); scanf("%d/n",&p->data.num); printf("姓名:"); scanf("%s/n",&p->data.name); printf("语文成绩:"); scanf("%d/n",&p->data.Chinese); printf("数学成绩:"); scanf("%d/n",&p->data.math); printf("英语成绩:"); scanf("%d",&p->data.English); p->data.total=(p->data.Chinese+p->data.English+p->data.math); rear->next=p; p->prior=rear; rear=p; p->next=head; /*向双链表中动态增加节点数据;*/ printf("继续输入吗?(Y/N)\n"); scanf("%s",&flag); } printf("\n"); } void load(dnode *head) //从文件中读取 { FILE *fp; int n,i; dnode *p,*rear; rear=head; head->next=head; head->prior=head; if((fp=fopen("file.txt","rb"))==NULL) { printf("打开文件失败!!!\n"); exit(0); } fscanf(fp,"%d",&n); for(i=0;i<n;i++) { p=(dnode *)malloc(sizeof(dnode)); fscanf(fp,"%-5d%8s%8d%9d%9d",&p->data.num,&p->data.name,&p->data.Chinese,&p->data.math,&p->data.English); rear->next=p; p->prior=rear; rear=p; p->next=head;/*从文件中动态载入节点数据;*/ } fclose(fp); printf("下载数据成功!!!\n\n"); } void display(dnode *head) //显示所有成绩 { dnode *p; p=head->next; printf("学号 姓名 语文 数学 英语 总分\n"); while(p!=head) { printf("%-5d%8s%8d%9d%9d%9d",p->data.num,p->data.name,p->data.Chinese,p->data.math,p->data.English,p->data.total); printf("\n"); p=p->next; } } void save(dnode *head)//存盘 { FILE *fp; dnode *p; int n=0,i; if((fp=fopen("file.txt","wb"))==NULL) { printf("打开文件失败!!!\n"); exit(1); } p=head->next; if(p!=head) { while (p!=head) { p=p->next; n++; } fprintf(fp,"%d",n); /*写入节点个数;*/ fprintf(fp,"\r\n"); /*写入回车符;*/ p=head->next; for(i=0;i<n;i++) { fprintf(fp,"%-5d%8s%8d%9d%9d",p->data.num,p->data.name,p->data.Chinese,p->data.math,p->data.English); fprintf(fp,"\r\n"); p=p->next; } /*向文件中写入节点数据;*/ } else printf("Please make sure the data is not NULL!!"); fclose(fp); printf("存盘成功!!!\n"); } void sort(dnode * head)//排序 { dnode *p,*pre,*q; p=head->next->next; head->next->next=NULL; while(p!=NULL) { q=p->next; pre=head; while(pre->next!=NULL&&pre->next->data.total<p->data.total) pre=pre->next; p->next=pre->next; if(pre->next!=NULL) pre->next->prior=p; pre->next=p; p->prior=pre; p=q; } display(head); } void quit(void) //退出 { exit(0); } void main() { char flag='Y'; for(;;) { dnode *q; int ch; printf("学生成绩管理系统:\n"); printf(" 输入学生成绩-----------------0\n"); printf(" 下载纪录-----------------1\n"); printf(" 显示所有成绩-------------2\n"); printf(" 存盘---------------------3\n"); printf(" 按总分排序-------------4\n"); printf(" 退出---------------------5\n"); printf("请输入数字(0~5):\n"); scanf("%d",&ch); switch(ch) { case 0: enter(); break; case 1: head=(dnode *)malloc(sizeof(dnode)); load(head); break; case 2: display(head); break; case 3: save(head); break; case 4: sort(head); break; case 5: quit(); break; default: printf("警告!!!请输入数字0-5!\n"); }/*用SWITCH函数选择菜单;*/ } } ```
在中国程序员是青春饭吗?
今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...
《MySQL 性能优化》之理解 MySQL 体系结构
本文介绍 MySQL 的体系结构,包括物理结构、逻辑结构以及插件式存储引擎。
程序员请照顾好自己,周末病魔差点一套带走我。
程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。
Python+OpenCV实时图像处理
目录 1、导入库文件 2、设计GUI 3、调用摄像头 4、实时图像处理 4.1、阈值二值化 4.2、边缘检测 4.3、轮廓检测 4.4、高斯滤波 4.5、色彩转换 4.6、调节对比度 5、退出系统 初学OpenCV图像处理的小伙伴肯定对什么高斯函数、滤波处理、阈值二值化等特性非常头疼,这里给各位分享一个小项目,可通过摄像头实时动态查看各类图像处理的特点,也可对各位调参、测试...
2020年一线城市程序员工资大调查
人才需求 一线城市共发布岗位38115个,招聘120827人。 其中 beijing 22805 guangzhou 25081 shanghai 39614 shenzhen 33327 工资分布 2020年中国一线城市程序员的平均工资为16285元,工资中位数为14583元,其中95%的人的工资位于5000到20000元之间。 和往年数据比较: yea...
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
害怕面试被问HashMap?这一篇就搞定了!
声明:本文以jdk1.8为主! 搞定HashMap 作为一个Java从业者,面试的时候肯定会被问到过HashMap,因为对于HashMap来说,可以说是Java集合中的精髓了,如果你觉得自己对它掌握的还不够好,我想今天这篇文章会非常适合你,至少,看了今天这篇文章,以后不怕面试被问HashMap了 其实在我学习HashMap的过程中,我个人觉得HashMap还是挺复杂的,如果真的想把它搞得明明白...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
python爬取百部电影数据,我分析出了一个残酷的真相
2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据,数据显示去年总票房为642.66亿元,同比增长5.4%;国产电影总票房411.75亿元,同比增长8.65%,市场占比 64.07%;城市院线观影人次17.27亿,同比增长0.64%。 看上去似乎是一片大好对不对?不过作为一名严谨求实的数据分析师,我从官方数据中看出了一点端倪:国产票房增幅都已经高达8.65%了,为什...
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
阿里面试,面试官没想到一个ArrayList,我都能跟他扯半小时
我是真的没想到,面试官会这样问我ArrayList。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
C语言荣获2019年度最佳编程语言
关注、星标公众号,不错过精彩内容作者:黄工公众号:strongerHuang近日,TIOBE官方发布了2020年1月编程语言排行榜单。我在前面给过一篇文章《2019年11月C语言接近Ja...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
良心推荐,我珍藏的一些Chrome插件
上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
一份王者荣耀的英雄数据报告
咪哥杂谈本篇阅读时间约为 6 分钟。1前言前一阵写了关于王者的一些系列文章,从数据的获取到数据清洗,数据落地,都是为了本篇的铺垫。今天来实现一下,看看不同维度得到的结论。2环境准备本次实...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
一个程序在计算机中是如何运行的?超级干货!!!
强烈声明:本文很干,请自备茶水!???? 开门见山,咱不说废话! 你有没有想过,你写的程序,是如何在计算机中运行的吗?比如我们搞Java的,肯定写过这段代码 public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } ...
【蘑菇街技术部年会】程序员与女神共舞,鼻血再次没止住。(文末内推)
蘑菇街技术部的年会,别开生面,一样全是美女。
那个在阿里养猪的工程师,5年了……
简介: 在阿里,走过1825天,没有趴下,依旧斗志满满,被称为“五年陈”。他们会被授予一枚戒指,过程就叫做“授戒仪式”。今天,咱们听听阿里的那些“五年陈”们的故事。 下一个五年,猪圈见! 我就是那个在养猪场里敲代码的工程师,一年多前我和20位工程师去了四川的猪场,出发前总架构师慷慨激昂的说:同学们,中国的养猪产业将因为我们而改变。但到了猪场,发现根本不是那么回事:要个WIFI,没有;...
为什么程序猿都不愿意去外包?
分享外包的组织架构,盈利模式,亲身经历,以及根据一些外包朋友的反馈,写了这篇文章 ,希望对正在找工作的老铁有所帮助
Java校招入职华为,半年后我跑路了
何来 我,一个双非本科弟弟,有幸在 19 届的秋招中得到前东家华为(以下简称 hw)的赏识,当时秋招签订就业协议,说是入了某 java bg,之后一系列组织架构调整原因等等让人无法理解的神操作,最终毕业前夕,被通知调往其他 bg 做嵌入式开发(纯 C 语言)。 由于已至于校招末尾,之前拿到的其他 offer 又无法再收回,一时感到无力回天,只得默默接受。 毕业后,直接入职开始了嵌入式苦旅,由于从未...
立即提问