[C++] 单链表插入问题
  • 设计接口函数int ListInsert_order (Node *H , DataType item);
  • 向递增有序的单链表H中插入新的元素item,插入后单链表仍然有序。
  • 请回答者附带注释,谢谢

4个回答

pzj062513
逆境中成长 初学者,看不懂,能按我上面的要求设计一个吗?
大约 4 年之前 回复

你这有点太投机取巧了.如果由需要,可以看一下我的博客,里面有单链表的相关问题,而且有代码分析.

zzh_569754126
Henry Zheng 回复逆境中成长: 看看我博客里面的吧,应该会有你所需要的。
大约 4 年之前 回复
pzj062513
逆境中成长 不是投机取巧,我想看别人的算法是怎样的,然后根据自己需要进行修改,而且我刚开始学,很多东西不太懂.
大约 4 年之前 回复

这就是插入排序的插入算法
会链表插入排序就一定可以做到
不会,可以参考数组的插入排序

单链表不是数组,不能像数组那样二分跳着找,

只能用指针一个一个往后找,找到一个比item大的插到前面去。

算法上不能优化了,就是O(n)时间遍历链表。

如果说参考 同的代码,只能是实现上的一点差别了。

这么基础的问题,你这是刚学数据结构么。。等学到树就很多很多算法了。。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
[C++] 单链表插入问题
* 设计接口函数int ListInsert_order (Node *H , DataType item); * 向递增有序的单链表H中插入新的元素item,插入后单链表仍然有序。 * 请回答者附带注释,谢谢
小白提问-关于单链表的插入-C语言
关于单链表的插入问题,尝试了很多次,不清楚问题出在哪,希望大牛能够帮助我指出代码中存在的问题,感激万分。 ``` #include<stdio.h> #include<stdlib.h> struct Link { int num; struct Link *next; }; void getInput(struct Link *num)//函数1 读入数据 { printf("input a number: "); scanf("%d", &num->num); } void rank_num(struct Link **link, struct Link *num)//函数2 排序插入 { struct Link *temp; struct Link *current; current = *link; while(num >= current->num || current->next != NULL) { if(current->next != NULL) { temp = current; current = current->next; } } if(current->next == NULL) { current->next = num; num->next = NULL; } else { temp->next = num; num->next = current; } } void printLink(struct Link *link)//函数3 打印结果 { while(link->next != NULL) { printf("%d ", link->num); link = link->next; } return; } void releaseLink(struct Link **link)//函数4 释放存储空间 { struct Link *temp; while(*link != NULL) { temp = *link; *link = (*link)->next; free(temp); } } int main()//主函数 main { struct Link *link = NULL; struct Link *num; num = (struct Link*)malloc(sizeof(struct Link)); for(int i=0; i<3; i++) { printf("请输入数据\n"); getInput(num); if(link != NULL) { rank_num(&link, num); } else { link = num; num->next = NULL; } } printLink(link); releaseLink(&link); return 0; } ```
单链表的插入 中的问题
要求:在带头节点的单链表llist中,p所指的节点后面插入元素x q->info=x;q->link=p->link;p->link=q;return 1; 其实我想问,p和p->link分别指的是什么意思啊??跪求大神指点!!!
C语言单链表,插入的地方有点问题。将一段英文统计单词,然后插入到链表
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<ctype.h> typedef struct Lnode{ char *word; int count; struct Lnode *next; }Lnode,*LinkList; void InitList(LinkList *L);//链表初始化 void divide(LinkList ,char *); void List_Insert(LinkList ,char *); int main(){ FILE *fp; if((fp = fopen("D:\\input.txt","r"))==NULL){ printf("can not open this file.\n"); exit(0); } LinkList L; InitList(&L); LinkList p =L; int i = 0; char a[500]; while(!feof(fp)) a[i++] = fgetc(fp); a[i-1] = '\0'; divide(L,a); while(p->next!=NULL) printf("%s %d",p->word,p->count); fclose(fp); return 0; } void InitList(LinkList *L){ *L = (LinkList)malloc(sizeof(struct Lnode)); (*L)->count = 0; //(*L)->word = "\0"; (*L)->next = NULL; } void divide(LinkList L,char *a){ int i = 0, j = 0; char temp[20]; while(a[i]!='\0'){ while(!isalpha(a[i])){ if(a[i]=='\0')break; i++; } if(a[i]=='\0') break; while(isalpha(a[i])) temp[j++] = a[i++]; temp[j] = '\0'; j = 0; List_Insert(L,temp); //printf("%s\n",temp); } } void List_Insert(LinkList L,char *temp ){ LinkList p = L; LinkList s; int sign = 0; while(p->next!=NULL){ if(strcmp(p->word,temp)==0){ p->count ++; sign = 1; } else{ p = p->next; } } if(sign == 0){ s = (LinkList)malloc(sizeof(struct Lnode)); s->count = 1; strcpy(s->word,temp); s->next = p; p->next = NULL; } }
单链表的插入,删除,基本问题!着急!!!
刚刚开始学习单链表,遇到一点问题,之前学过一点点的c语言。运行结果好像没有办法调用函数似的,实在不知道是哪里出了问题,请求大神帮助! #include<stdio.h> #include<malloc.h> #define INIT_SIZE 50 #define INCREM 10 #define OK 1 #define ERROR 0 typedef struct Node{ int data; struct Node *next; }Node,*List;// List InitList(); List CreateList(); void FreeList(List); List InsertList(List, int, int); List DeleteList(List, int); List InitList()// { List H = (Node*)malloc(sizeof(Node)); if (H == NULL) printf("申请空间失败!"); H->next = NULL; return H; } List CreateList() { int x; List H = (Node*)malloc(sizeof(Node)); H->next = NULL;// while (scanf_s("%d", &x)!=EOF) { List p = (Node*)malloc(sizeof(Node)); p->data = x; p->next = H->next; H->next = p; } return H; } List InsertList(List H, int i, int e) { List q = H; int k=0; for (k = 1; k < i; k++)//找到i的前驱结点 q = q->next; if (q == NULL) return ERROR; List y = (Node*)malloc(sizeof(Node));//给要新插入的结点分配内存 y->data = e;//给要新插入的结点赋值为e y->next = q->next; q->next = y; return H; } List DeleteList(List H,int i)//删除单链表中第i位置的元素 { int k; List q = H; //定义p为要查找的结点 for (k = 1; k i; k++) q = q->next; if (q == NULL) return ERROR; List p = q->next; q->next = p->next; free(p); return H; } void FreeList(List H)//销毁单链表 { List p = H; while (p) { p = p->next; free(p); p = H; } } int main() { List p,q; int i,e; printf("请输入单链表中的数据:\n"); q = InitList(); q=CreateList(); for (p=q->next; p!=NULL; p=p->next) printf("%d", q->data); printf("\n"); printf("在第二个位置处插入元素10:\n"); InsertList(q, 2, 10); for (p = q->next; p != NULL; p = p->next) printf("%d", q->data); printf("\n"); DeleteList(q, 2); printf("删除第二个位置元素后的单链表p:\n"); for (p = q->next; p != NULL; p = p->next) printf("%d", q->data); printf("\n"); return 0; }
C语言将两个递增有序单链表归并为一个降序的单链表,求大侠帮忙看看
#include <stdio.h> #include <stdlib.h> #define N 8 typedef struct list { char c; struct list *next; } SLIST; SLIST *creat(char *a) { SLIST *h,*p,*q; int i; h=p=(SLIST *)malloc(sizeof(SLIST)); for(i=0; i<N; i++) { q=(SLIST *)malloc(sizeof(SLIST)); q->c=a[i]; p->next=q; p=q; } p->next=0; return h; } void output(SLIST *h) { SLIST *p; p=h->next; if (p==NULL) printf("\nThe list is NULL!\n"); else { printf("\nHead"); while(p->c!=0) { printf("->%c",p->c); p=p->next; } printf("->End\n"); } } SLIST *sub(SLIST *a,SLIST *b) { SLIST *pa,*pb,*r; pa=a; pb=b; r=NULL; //r为新链表头 while(pa->c!=0&&pb->c!=0) { if(pa->c< pb->c) { a=a->next; pa->next=r; r=pa; pa=a; } else { b=b->next; pb->next=r; r=pb; pb=b; } } while(pa!=NULL)//如果是表1未完,它的剩余结点倒序插入。 { a=a->next; pa->next=r; r=pa; pa=a; } while(pb!=NULL) { b=b->next; pb->next=r; r=pb; pb=b; } r=r->next; return(r); } void main() { SLIST *head1,*head2,*head3; char a[N]="abcdefg"; char b[N]="ABCDEFG"; head1=creat(a); printf("\nThe first list before merging:\n"); output(head1); head2=creat(b); printf("\nThe second list before merging:\n"); output(head2); head3=sub(head1,head2); printf("\nThe list after merging:\n"); output(head3); } /* 1.程序运行结果为: The first list before merging: Head->a->b->c->d->e->f->g->End The second list before merging: Head->A->B->C->D->E->F->G->End The list after merging: Head->g->f->e->d->c->b->a->G->F->E->D->C->B->A->?>蚉ress any key to continue ====C语言将两个递增有序单链表归并为一个降序的单链表,求大侠帮忙看看 程序运行时最后报错,为什么呢? */
一、 创建一个字符单链表,实现对字符的插入、删除、查找、元素个数的统计等基本操作,要求为用户提供选择式菜单?
C语言 数据结构 一、 创建一个字符单链表,实现对字符的插入、删除、查找、元素个数的统计等基本操作,要求为用户提供选择式菜单。
单链表中的插入和删除
要求: (1)建立一个数据域存储1,3, 5,7的单链表; (2)将6插入到单链表中,使其仍保持递增的顺序; (3)将5删除。
c语言单链表每次进行查找操作和排序操作的时候程序就闪退
刚学单链表,但是程序每到进行查找操作和排序操作,程序就闪退 编译的时候也没有报错,深夜求助,下面是测试程序的一些片段,单链表初始化和其他操作如插入、删除、输出等都没什么问题,就是一到下面两种操作就闪退了,两个操作函数都是void型的 ``` Linklist L; ElemType *e; case 9:printf("请输入元素的位置\n");scanf("%d",&flag);GetElem(L,flag,e);break;//找到flag位置的数据并print出来 case 14:LinkSort(&L);break;//对单链表中的数据排序 ``` 下面是查找操作的函数 ``` void GetElem(Linklist L,int i,Elemtype *e) { if (L==NULL) { printf("单链表不存在\n"); } else { if (L->next==NULL) { printf("单链表为空\n"); }//前提判断 else{ int length; length=ListLength(L); if (i>length||i<0) { printf("输入错误\n"); }//判断输入合法性 else { int j=0; for (j = 0; j < i; j++) { (*e)=(L->next)->data; L=L->next; }//循环i次,将L->next指向第i个节点,并传值给*e printf("第%d个位置的数据为%d\n",i,*e); } } } } ``` 下面是排序操作的函数,排序操作的我的思想是,创建一个新单链表,然后将传入的单链表的每个节点的数据先与新单链表中的数据进行比较,从小到大确定位置,然后再用插入操作,将每个数据插入新的单链表中 ``` void LinkSort(Linklist *L) { if ((*L)==NULL) { printf("单链表不存在\n"); } else { int l=ListLength(*L); if (l<2) { printf("单链表中至少要有两个元素才能进行排序\n"); } else { int i; Linklist p=(*L)->next; Linklist q,s; q=(Linklist)malloc(sizeof(LNode)); q->next=NULL; s=(Linklist)malloc(sizeof(LNode)); s->data=p->data; s->next=NULL; q->next=s;//先将传入单链表的第一个节点的数据添加到新单链表中去 Linklist r=q->next; p=p->next; while(p->next!=NULL) { i=1;//i是用来确定后续插入位置的 while((p->data)>(r->data)&&r->next!=NULL) { i++; r=r->next; } if ((p->data)>(r->data)) { i++; ListInsert(&q,i,p->data); } else ListInsert(&q,i,p->data); p=p->next; r=q->next; } i=1; while((p->data)>(r->data)&&r->next!=NULL) { i++; r=r->next; } if ((p->data)>(r->data)) { i++; ListInsert(&q,i,p->data); } else ListInsert(&q,i,p->data); *L=q; printf("排序完成\n"); } } } ``` 再附上插入操作函数 ``` void ListInsert(Linklist *L,int i,Elemtype e) { if (*L==NULL) { printf("单链表不存在\n"); } else { int length=ListLength(*L); if (i<1||i>length+1) { printf("输入错误\n"); }//判断输入的合法性 else { Linklist p=*L; int j=0; for (j = 0; j <i-1 ; j++) { p=p->next; }//通过循环使p指向所要插入节点位置的前一个节点 Linklist *r; (*r)=(Linklist)malloc(sizeof(LNode)); (*r)->data=e; (*r)->next=p->next; p->next=*r;//将新建立的节点插入 printf("插入成功\n"); } } } ``` 这是操作情景,直接退回桌面了 呜呜呜 ![图片说明](https://img-ask.csdn.net/upload/201910/21/1571593640_443751.png)
c的单链表数据结构实现
设计要求: 有论文参考文献如下: 1.Billinghurst M, Billinghurst M, Clark A. A Survey of Augmented Reality[J]. Foundations and Trends in Human-computer Interaction, 2015, 8(2-3): 73-272. 2.Oskiper T, Sizintsev M, Branzoi V. Augmented Reality Binoculars[J]. IEEE Transactions on Visualization and Computer Graphics, 2015. 3. Chowriappa A, Raza S, Raza S. Augmented‐reality‐based skills training for robot‐assisted urethrovesical anastomosis: a multi‐institutional randomised controlled trial[J]. BJUI, 2015, 115(2): 336-345. 4. Gans E, Roberts D, Bennett M. Augmented reality technology for day/night situational awareness for the dismounted Soldier[J]. Spie Defense Security, 2015. 5. Magnenat S, Magnenat S, Ngo D. Live Texturing of Augmented Reality Characters from Colored Drawings[J]. IEEE Transactions on Visualization and Computer Graphics, 2015, 21(11): 1201-1210. 6. Kinect康复训练辅助系统研究Study of Kinect Rehabilitation Training Aid System[J]. 2013. 7. 达 杨, 孝通 王, 冠雷 徐. 海上视频增强关键技术研究进展 The Key Technologies of Maritime Video Enhancement: A Survey[J]. Journal of Image and Signal Processing, 2014. 8. Ji L, Zhang F, Fu Y. 3D Interaction Techniques Based on Semantics in Virtual Environments[J]. Journal of Software, 2006. 根据上述参考文献,完成以下功能: l单链表,链表的结点的结构包括:作者、题名、文献类型(J代表期刊)、期刊名、出版年份、卷(期)、起始页码、结束页码; l查询所有2015年参考文献并输出; l第7条文献前插入如下的参考文献: Ng L, Wang Z, Ong S. Integrated product design and assembly planning in an augmented reality environment[J]. Assembly Automation, 2014. l第3题的基础上删除包含kinect的参考文献
@数据结构大神,单链表的插入,47行怎么错了?求解释~
# include<stdio.h> # include<stdlib.h> typedef struct Node { char data; struct Node *next; }Node,*Linklist;//先定义、后使用 //定义数据L-分配头节点-插入数据,连接-返回 Linklist Createfromhead() { Linklist L;Node*s;int flag=1;char c; L=(Linklist)malloc(sizeof(Node)); L->next=NULL; while(flag) { c=getchar(); if(c!='$') { s=(Node*)malloc(sizeof(Node)); s->data=c; s->next=L->next; L->next=s; } else flag=0; } do{ printf("%c ",L->data); L=L->next ; }while(L!=NULL); //打印插入后的链表(反序打印) return L; } int insect(Linklist L,char e,int k) { Node *r;Linklist pre;int i=0;//输入e插入的字母,k所在的位数,说明pre指向头节点 pre=(Linklist)malloc(sizeof(Node)); pre->data=L->data;//pre的数据域就是L的数据域。怎么错了? while((pre->next!=NULL)&&(i<k-1)) {pre=pre->next;k++;}//寻找插入的前驱结点pre if(k!=i-1)// 由于 pre->next!=NULL退出 (链表不够长) return 0; r=(Linklist)malloc(sizeof(Node)); r->data=e; r->next=pre->next;pre->next=r;//插入新的节点 return 1; } int main() { char e;int k;Linklist L; Createfromhead(); printf("\ninput k e\n"); scanf("%d %c",&k,&e); printf("\n%d,%c\n",k,e);//对k,e输入输出 if(insect(L,e,k)==0) printf("wrong"); else {do{ printf("%c ",L->data); L=L->next ; }while(L!=NULL);//打印插入后的链表(反序打印) } getch(); return 0; } ![图片说明](https://img-ask.csdn.net/upload/201511/14/1447459030_240444.png)
@数据结构大神,单链表的插入,56行怎么错了?求解释~
# include<stdio.h> # include<stdlib.h> typedef struct Node { char data; struct Node *next; }Node,*Linklist;//先定义、后使用 //定义数据L-分配头节点-插入数据,连-接-返回 Linklist Createfromhead() { Linklist L;Node*s;int flag=1;char c; L=(Linklist)malloc(sizeof(Node)); L->next=NULL; while(flag) { c=getchar(); if(c!='$') { s=(Node*)malloc(sizeof(Node)); s->data=c; s->next=L->next; L->next=s; } else flag=0; } do{ printf("%c ",L->data); L=L->next ; }while(L!=NULL); //打印插入后的链表(反序打印) return L; } int insert(Linklist L,char e,int k) { Node *r;Linklist pre=L;int i=0;//输入e插入的字母,k所在的位数,说明pre指向头节点 //给链表+分配空间,不用给数据 pre=(Node*)malloc(sizeof(Node)); while(i<k-1)//(pre->next!=NULL)&&情况不用 {pre=pre->next;i++;}//寻找插入的前驱结点pre // if(k!=i-1) 由于 pre->next!=NULL退出 (链表不够长) // return 0; 情况不用 r=(Linklist)malloc(sizeof(Node)); r->data=e; r->next=pre->next;pre->next=r;//插入新的节点 return 1; } int main() { char e;int k;Linklist L; Createfromhead(); printf("\ninput k e\n"); scanf("%d %c",&k,&e); printf("\n%d,%c\n",k,e);//对k,e输入输出 if(insert(L,e,k)==0) printf("wrong"); else {do{ printf("%c ",L->data); L=L->next ; }while(L!=NULL);//打印插入后的链表(反序打印) } getch(); return 0; } ![图片说明](https://img-ask.csdn.net/upload/201511/14/1447497742_842136.png) -
C++实现单链表,指向单链表的结点的指针
C++实现单链表。结构体Node ,单链表的类Linklist。老师要求在当前结点后插入。我要问的就是有关这个当前结点的。在当前结点插入就应该要有指向当前结点的指针,对吧。在单链表里面,指针是滑来滑去的。我要怎么用C++搞一个可以滑来滑去的指针啊!!我做出来thread错误,心很累啊,就是个渣渣,求大神指导 #include <iostream>using namespace std;struct Node{ int data; Node *next;};class List{ Node *head;//头结点 Node *p;//初始指针public: List(){head=NULL;} void Creatlist(); void InsertCurrent(int item); void InsertHead(int item); void InsertTail(int item); void DeleteCurrent(); void DeleteHead(); void DeleteTail(); int FindCurrent(); int FindK(int k); int Search(int item); void Outputlist();};void List::Creatlist(){ Node *s; p = head; cout << "请依次输入5个元素的值" << endl; for (int i = 0; i<5; i++) { s = new Node; cin >> s->data; s->next = p->next; p->next = s; p = s; }}void List::InsertCurrent(int item)//插入在当前结点后,item表示要插入的结点s中的数据{ Node *s;//s指向要插入的结点 s=new Node;//动态分配一个新结点 s->data=item;//设item为此结点 s->next=p->next;//s的next指针指向p的后继结点 p->next=s;//p的next指针指向s return;
【数据结构】求助:一个简单的单链表问题
![图片说明](https://img-ask.csdn.net/upload/201811/25/1543122755_25344.jpg) ``` #include <stdio.h> #include <stdlib.h> #define MAXSIZE 20 typedef int ElemType; typedef struct { ElemType data; struct Node* next; }Node,*LinkList; int main() { //建立单链表 LinkList LA; *LA=(LinkList)malloc(sizeof(Node)); *LA->next=NULL; Node *r,*s; int c; r=LA; int flag=1,count=0; while(flag) { printf("Please input new node to the LinkList,node must be intatger,input q to quit:\n"); scanf("%d",&c); if(c!="q") { s=(Node*)malloc(sizeof(Node)); s->data=c; r->next=s; r=s; count++; } else { flag=0; r->next=NULL; } } Deal(LA,count); //打印新生成的表 printf("New LinkList is:\n"); r=LA->next; while(r->next!=NULL) { printf("%5d",r->data); } return 0; } int Deal(LinkList *LA,int n)//n为单链表长度,n为偶数 { LinkList LB,LC; *LB=(LinkList)malloc(sizeof(Node));//建立头结点 *LB->next=NULL;//建立空的单链表LB *LC=(LinkList)malloc(sizeof(Node));//建立头结点 *LC->next=NULL;//建立空的单链表LC Node *p,*q,*r; int i; p=LA->next->next;//令指针p指向序号为偶数的元素 q=LA->next;//令指针q指向序号为奇数的元素 r=LB;//令指针r指向LB s=LC;//令指针s指向LC //插入LB的第一个元素 LB->next=p; q-next=p-next; p=p->next->next; while(p->next!=NULL&&q->next!=NULL) { //尾插法 s->next=q; LA=q->next; q=q->next->next; s=s->next; //头插法 p->next=LB->next; LB->next=p; p=p->next->next; } //合并LB/LC两表 if(p->next==NULL) { p->next=LC->next; free(LC); } return 0; } ``` 程序无法通过编译,麻烦各位大神帮忙看一看那里出问题了
C++单链表定义及简单应用出错
跟着书上做单链表的应用, 首先先建立了一个danlianbiao.h文件 #include <iostream> #include <assert.h> #include <string.h> using namespace std; template <class type> class ablist { public: int Getlength() {return length;} virtual type Get(int i); virtual bool Set(type x,int i)=0; virtual void MakeEmpty()=0; virtual bool Insert(type value,int i)=0; virtual type Remove(int i)=0; virtual type Remove1(type value)=0; protected: int length; }; //抽象节点类 template <class type> class ListNode { public: ListNode() { next=NULL; } ListNode(const type & item,ListNode <type> *next1=NULL) { data=item; next=next1; } type data; ListNode <type> *next; }; //抽象链表类 template <class type> class ablinklist:public ablist <type> { public: ListNode<type> *GetHead() { return head; } ListNode <type> *GetNext(ListNode<type> & n) { return n.next==head?n.next->next:n.next; } type Get(int i); bool Set(type x,int i); ListNode<type> *Find1(type value); ListNode<type> *Find (int i); void MakeEmpty(); virtual bool Insert(type value, int i)=0; virtual type Remove(int i)=0; virtual type Remove1(type value)=0; protected: ListNode <type> *head; }; //设值函数 template <class type> bool ablinklist<type>::Set(type x,int i) { ListNode<type> *p=Find(i); if(p==NULL||p==head) return false; else p->data=x; return true; } //取值函数 template <class type> type ablinklist<type> ::Get(int i) { ListNode<type> *p=Find(i); assert(p&&p!=head); return p->data; } //清空链表函数 template <class type> void ablinklist<type>::MakeEmpty() { ListNode<type> *q=head->next; int i=1; while(i++<=length) { head->next=q->next; delete q; q=head->next; } length=0; } //搜索值为value的结点 template <class type> ListNode <type> *ablinklist <type>::Find1(type value) { ListNode<type> *p=head->next; int i=1; while (i++<=length && p->data!=value) p=p->next; return p; } //定位函数 template <class type> ListNode <type> *ablinklist<type>::Find(int i) { if(i<0||i>length) return NULL; if(i==0) return head; ListNode <type> *p =head->next; int j=1; while(p!=NULL&&j<i) { p=p->next; j++; } return p; } //单链表类的定义 template <class type> class List:public ablinklist<type> { public: List() { head=new ListNode<type>; length=0; } List(List <type> & l) { Copy(l); } ~List() { MakeEmpty();delete head; } bool Insert(type value,int i); type Remove(int i); type Remove1(type value); List <type> &Copy(List <type> & l); List <type> &operator =(List <type> &l); friend ostream &operator <<(ostream &, List <type> &); }; //在第i个位置插入一个结点 template <class type> bool List <type>::Insert(type value,int i) { ListNode<type> *p=Find(i-1); if(p==NULL) return false; ListNode <type> *newnode =new ListNode <type>(value,p->next); assert(newnode); p->next=newnode; length++; return true; } //删除指定位置i处的结点 template <class type> type List <type>::Remove(int i) { ListNode <type> *p=Find(i-1),*q; assert(p&&p->next); q=p->next; p->next=q->next; type value=q->data; delete q; length --; return value; } //删除元素值为value的结点 template <class type> type List <type>::Remove1(type value) { ListNode<type> *q,*p=head; while (p->next!=NULL&&p->next->data!=value) p=p->next; assert(p->next); q=p->next; p->next=q->next; delete q; length--; return value; } //拷贝链表 template <class type> List <type> &List <type>::Copy(List<type> & l) { ListNode <type> *q,*p,&r; length=l.length; head=NULL; if(!l.head) return *this; head=new ListNode <type>; if(!head) head->data=(l.head)->data; head->next=NULL; r=NULL;p=head; q=l.head->next; while (q) { r=new ListNode <type>; if(!r) return *THIS; r->data=q->data; r->next=NULL; p->next=r; p=p->next; q=q->next; } return *this; } //重载赋值运算符 template <class type> List <type> & List <type>::operator=(List <type> &l) { if(head) MakeEmpty(); Copy(l); return *this; } template <class type> ostream & operator <<(ostream &out,List <type> & l) { ListNode <type> *p=l.head->next; out<<"lrngth:"<<l.length<<"\ndata:"; while(p) { out<<p->data<<" "; p=p->next; } out<<"\n"; return out; } 然后建立.cpp文件,下面是我从书上一大段代码里面选了一部分写的。 //#include "lianbiao.h" #include <iostream> #include "danlianbiao.h" #include "assert.h" #include "string.h" #include "stdio.h" using namespace std; struct term{ int coef; int exp; bool operator!=(term & t) {return coef!=t.coef||exp!=t.exp;} friend ostream &operator <<(ostream &out,term &t) { out<<t.coef<<"x"<<t.exp<<" ";return out; } friend istream &operator>>(istream &in,term &t) { in>>t.coef>>t.exp;return in;} }; void main() { List <term> polya,polyb,polyc; term ta,tb,t; int na,nb; int i,j; cout<<"a多项式共有多少项?\n"; cin>>na; cout<<"按指数从大到小的顺序,依次输入各项系数、指数\n"; for(i=1;i<na;i++) { cout<<"\n第"<<i<<"项:"; cin>>t; polya.Insert(t,i); } cout<<"b多项式共有多少项?\n"; cin>>nb; cout<<"按恪?指?数簓从洙?大洙?到?小?的?顺3序ò,\n依皑?次?输?入?各÷项?系μ数簓、¢指?数簓。£\n"; for(i=1;i<=nb;i++) { cout<<"\n第台"<<i<<"项?:阰"; cin>>t; polyb.Insert(t,i); } cout<<"\npolya:"; cout<<polya; cout<<"\npolyb"; cout<<polyb; } 结果是无法运行,报错如下 d:\新建文件夹\chapter1\chapter1\polynomial_lianbiao.cpp(27): warning C4101: “ta”: 未引用的局部变量 1>d:\新建文件夹\chapter1\chapter1\polynomial_lianbiao.cpp(27): warning C4101: “tb”: 未引用的局部变量 1>d:\新建文件夹\chapter1\chapter1\polynomial_lianbiao.cpp(29): warning C4101: “j”: 未引用的局部变量 1> 正在生成代码... 1>polynomial_lianbiao.obj : error LNK2019: 无法解析的外部符号 "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,class List<struct term> &)" (??6@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV01@AAV?$List@Uterm@@@@@Z),该符号在函数 _main 中被引用 1>polynomial_lianbiao.obj : error LNK2001: 无法解析的外部符号 "public: virtual struct term __thiscall ablist<struct term>::Get(int)" (?Get@?$ablist@Uterm@@@@UAE?AUterm@@H@Z) 1>D:\新建文件夹\chapter1\Debug\chapter1.exe : fatal error LNK1120: 2 个无法解析的外部命令 1> 1>生成失败。 不知道哪里出的错误,又该如何解决啊??
C语言链表插入操作,一个函数
Description 已知线性表中元素为整数,且按照升序排列。编写算法实现在线性表中查找值为x的元素,如果查找成功,返回1;否则,返回0,并且把x插入到正确的位置,使线性表仍按升序排列。 依次输出调用查找插入算法后的线性表中的元素。 提示:存储结构采用代表头结点的循环单链表,结点结构如下: typedef struct Node { int data; struct Node *next; }LNode,*LinkList; 要求: (1)编写函数建立循环单链表CreateLinkList(int n),函数返回值类型为LinkList。 LinkList CreateLinkList(int n) { /*按照升序输入n个整数,建立带表头结点的循环单链表*/ } (2) 编写查找函数QueryLinkList(LinkList *L,int x)实现查找并插入功能,函数返回值类型int。 int QueryLinkList(LinkList *L,int x) { /*查找值为x的元素,若查找成功返回1,否则返回0,并把x插入到相应的位置。*/ } (3)编写函数Display(LinkList L),输出线性表中的元素。 (4)main函数调用QueryLinkList()函数,输出查找结果,然后调用Display函数依次输出线性表中的元素。 Input 输入元素个数n 依次输入n个升序排列的整数 输入带查找的元素值x Output 输出查找结果1或者0 依次输出线性表中的元素值 Sample Input sample 1: 6 2 5 8 10 12 16 10 sample2: 6 2 5 8 10 12 16 9 Sample Output sample 1: 1 2 5 8 10 12 16 sample2: 0 2 5 8 9 10 12 16
单链表可以随机访问吗?复制链表~
//第二个函数,复制链表,要用到L链表的第一位,怎么访问? # include<stdio.h> # include<stdlib.h> typedef struct Node { char data; struct Node *next; }Node,*Linklist; Linklist Createfromtail()//尾插法建立链表 { Linklist L;Node *s;Node *r;char c;int flag=1; L=(Linklist)malloc(sizeof(Node)); L->next=NULL;r=L; while(flag) { c=getchar(); if(c!='$') { s=(Node*)malloc(sizeof(Node)); s->data=c;//要分配空间、要给值 r->next=s;//完整的元素是r,赋值给r的next r=s; } else {flag=0;r->next=NULL;} do { printf("%c,\n",L->data); L=L->next ; }while(L!=NULL); return L; } //复制形成新链表 Linklist Copy(*first)//思路:先复制一个节点,再插入新的链表 { Node *p,*r,*s;Linklist head; head=(Linklist)malloc(sizeof(Node)); p=first->next; r=head; while(p!=NULL) { s=(Linklist)malloc(sizeof(Node)); s->data=p->data; r->next=s; r=s; p=p->next; } r->next=NULL;//最后完成封装 return head; } int main() { Createfromtail(); Copy(); getch(); } ``` ```
数据结构c++循环单链表问题,急!!
CirSinglyList<T>& operator+=(CirSinglyList<T> &list) //尾插入list,集合并
单链表的头插法和尾插法,用同一个方法求长度。。。。
``` #include <stdio.h> #include <stdlib.h> #include <malloc.h> //单链表结构 typedef int datatype; typedef struct node { datatype data; struct node *next; }linklist; linklist *head,*p;//指针类型说明 /*头插法建表 用头插法建成的链表中结点的次序和输入的顺序是相反的。 */ linklist *CREATLISTF(){ char ch;//逐个输入字符,以'#'为结束符,返回单链表头指针 linklist * head,*s; head=NULL;//链表开始为空 ch=getchar();//读入第一个结点的值 while(ch!='#') { s=malloc(sizeof(linklist));//生成新的结点 s->data=ch; s->next=head; head=s;//将新结点插入到表头上 ch=getchar();//读入下一个结点的值 } return head;//返回表头指针 } //计算不带头结点的单链表的长度,然后输出单链表 void Print(linklist *L) { int num=0; linklist *p; p=L; while(p) { printf("%c ",p->data); p=p->next; num++; } printf("\nthe length is :%d\n",num); } //尾插法——返回表的头指针 linklist *CREATLISTR(){ char ch; linklist * head,*s,*r; head=NULL;//置空链表 r=NULL;//尾指针初值为空。 ch=getchar(); while(ch!='#'){ s=malloc(sizeof(linklist));//生成新的结点 s->data=ch; if (head==NULL) head=s; else r->next=s; r=s; ch=getchar(); } if(r!=NULL) r->next=NULL; return head; } //查找——按照序号查找 //主函数 int main(){ linklist *f,*r ; //printf("head insert:\n"); //f=CREATLISTF();//头插法建立单链表 //Print(f);//打印链表和链表的长度 printf("tail insert:\n"); r=CREATLISTR();//尾插法 Print(r); } ``` ===================== =============调用头插法和尾插法,右边是输出结果============================ ![调用头插法和尾插法](https://img-ask.csdn.net/upload/201604/07/1460024767_275493.png) ==============只是调用尾插法,右边是输出结果============================== ![只是调用尾插法](https://img-ask.csdn.net/upload/201604/07/1460024804_430635.png) ============================================= 在主函数中先是调用头插法再调用尾插法。但是尾插法输出的长度多了一个。如果只是在调用尾插法,长度就正常输出了。这到底是什么原因??
c++实现单链表的在指定元素(x)前插入元素(b)的算法
单链表的插入代码如下: ![图片说明](https://img-ask.csdn.net/upload/201810/14/1539532543_971618.png) 单链表打印代码如下: ![图片说明](https://img-ask.csdn.net/upload/201810/14/1539532572_862054.png) 单链表使用代码如下: ![图片说明](https://img-ask.csdn.net/upload/201810/14/1539532611_70650.png) 输出结果如下: ![图片说明](https://img-ask.csdn.net/upload/201810/14/1539532635_19313.png) 以上结果是vs运行时的结果,可是,按照插入算法,或者说,正确的结果应该为20,30,10,40,20. 求解决。
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看...
阿里P8数据架构师:顶级开发者都在用什么数据库?
其实从去年已经隐隐约约感觉到数据库的有变化,只是没有想到变得这么快。今年的一些事情实实在在地给了某些数据库重击,如果以前去某数据库还是喊喊,然后该用还用,今年从传统领域刮起的去某数据库的风,已经开始了,并且后面的乌云密布也看得见。 最近看一篇国外的开源产品提供厂商的一篇文字,主要是在询问了他的几百位客户后得出了下图中的2019年数据库的使用趋势。 从图中可以看出,MySQL以38.9...
面试官:关于Java性能优化,你有什么技巧
通过使用一些辅助性工具来找到程序中的瓶颈,然后就可以对瓶颈部分的代码进行优化。 一般有两种方案:即优化代码或更改设计方法。我们一般会选择后者,因为不去调用以下代码要比调用一些优化的代码更能提高程序的性能。而一个设计良好的程序能够精简代码,从而提高性能。 下面将提供一些在JAVA程序的设计和编码中,为了能够提高JAVA程序的性能,而经常采用的一些方法和技巧。 1.对象的生成和大小的调整。 J...
互联网公司分布式系统架构演进之路
介绍 分布式和集群的概念经常被搞混,现在一句话让你明白两者的区别。 分布式:一个业务拆分成多个子业务,部署在不同的服务器上 集群:同一个业务,部署在多个服务器上 例如:电商系统可以拆分成商品,订单,用户等子系统。这就是分布式,而为了应对并发,同时部署好几个用户系统,这就是集群 1 单应用架构 2 应用服务器和数据库服务器分离 单机负载越来越来,所以要将应用服务器和数据库服务器分离 3 应用服务...
【图解算法面试】记一次面试:说说游戏中的敏感词过滤是如何实现的?
版权声明:本文为苦逼的码农原创。未经同意禁止任何形式转载,特别是那些复制粘贴到别的平台的,否则,必定追究。欢迎大家多多转发,谢谢。 小秋今天去面试了,面试官问了一个与敏感词过滤算法相关的问题,然而小秋对敏感词过滤算法一点也没听说过。于是,有了下下事情的发生… 面试官开怼 面试官:玩过王者荣耀吧?了解过敏感词过滤吗?,例如在游戏里,如果我们发送“你在干嘛?麻痹演员啊你?”,由于“麻痹”是一个敏感词,...
程序员需要了解的硬核知识之汇编语言(一)
之前的系列文章从 CPU 和内存方面简单介绍了一下汇编语言,但是还没有系统的了解一下汇编语言,汇编语言作为第二代计算机语言,会用一些容易理解和记忆的字母,单词来代替一个特定的指令,作为高级编程语言的基础,有必要系统的了解一下汇编语言,那么本篇文章希望大家跟我一起来了解一下汇编语言。 汇编语言和本地代码 我们在之前的文章中探讨过,计算机 CPU 只能运行本地代码(机器语言)程序,用 C 语言等高级语...
OpenCV-Python 绘图功能 | 七
目标 学习使用OpenCV绘制不同的几何形状 您将学习以下功能:cv.line(),cv.circle(),cv.rectangle(),cv.ellipse(),cv.putText()等。 代码 在上述所有功能中,您将看到一些常见的参数,如下所示: img:您要绘制形状的图像 color:形状的颜色。对于BGR,将其作为元组传递,例如:(255,0,0)对于蓝色。对于灰度,只需传递...
GitHub 标星 1.6w+,我发现了一个宝藏项目,作为编程新手有福了!
大家好,我是 Rocky0429,一个最近老在 GitHub 上闲逛的蒟蒻… 特别惭愧的是,虽然我很早就知道 GitHub,但是学会逛 GitHub 的时间特别晚。当时一方面是因为菜,看着这种全是英文的东西难受,不知道该怎么去玩,另一方面是一直在搞 ACM,没有做一些工程类的项目,所以想当然的以为和 GitHub 也没什么关系(当然这种想法是错误的)。 后来自己花了一个星期看完了 Pyt...
Java知识体系最强总结(2020版)
更新于2019-12-15 10:38:00 本人从事Java开发已多年,平时有记录问题解决方案和总结知识点的习惯,整理了一些有关Java的知识体系,这不是最终版,会不定期的更新。也算是记录自己在从事编程工作的成长足迹,通过博客可以促进博主与阅读者的共同进步,结交更多志同道合的朋友。特此分享给大家,本人见识有限,写的博客难免有错误或者疏忽的地方,还望各位大佬指点,在此表示感激不尽。 文章目录...
计算机专业的书普遍都这么贵,你们都是怎么获取资源的?
介绍几个可以下载编程电子书籍的网站。 1.Github Github上编程书资源很多,你可以根据类型和语言去搜索。推荐几个热门的: free-programming-books-zh_CN:58K 星的GitHub,编程语言、WEB、函数、大数据、操作系统、在线课程、数据库相关书籍应有尽有,共有几百本。 Go语言高级编程:涵盖CGO,Go汇编语言,RPC实现,Protobuf插件实现,Web框架实...
卸载 x 雷某度!GitHub 标星 1.5w+,从此我只用这款全能高速下载工具!
作者 | Rocky0429 来源 | Python空间 大家好,我是 Rocky0429,一个喜欢在网上收集各种资源的蒟蒻… 网上资源眼花缭乱,下载的方式也同样千奇百怪,比如 BT 下载,磁力链接,网盘资源等等等等,下个资源可真不容易,不一样的方式要用不同的下载软件,因此某比较有名的 x 雷和某度网盘成了我经常使用的工具。 作为一个没有钱的穷鬼,某度网盘几十 kb 的下载速度让我...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Fiddler+夜神模拟器进行APP抓包
Fiddler+夜神模拟器进行APP抓包 作者:霞落满天 需求:对公司APP进行抓包获取详细的接口信息,这是现在开发必备的。 工具:Fiddler抓包,夜神模拟器 模拟手机 安装APP 1.下载Fiddler https://www.telerik.com/download/fiddler Fiddler正是在这里帮助您记录计算机和Internet之间传递的所有HTTP和HTTPS通信...
小白学 Python 爬虫(42):春节去哪里玩(系列终篇)
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Linux基础入门 小白学 Python 爬虫(4):前置准备(三)Docker基础入门 小白学 Python 爬虫(5):前置准备(四)数据库基础 小白学 Python 爬虫(6):前置准备(...
一文带你看清 HTTP 所有概念
上一篇文章我们大致讲解了一下 HTTP 的基本特征和使用,大家反响很不错,那么本篇文章我们就来深究一下 HTTP 的特性。我们接着上篇文章没有说完的 HTTP 标头继续来介绍(此篇文章会介绍所有标头的概念,但没有深入底层) HTTP 标头 先来回顾一下 HTTP1.1 标头都有哪几种 HTTP 1.1 的标头主要分为四种,通用标头、实体标头、请求标头、响应标头,现在我们来对这几种标头进行介绍 通用...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东...
破14亿,Python分析我国存在哪些人口危机!
一、背景 二、爬取数据 三、数据分析 1、总人口 2、男女人口比例 3、人口城镇化 4、人口增长率 5、人口老化(抚养比) 6、各省人口 7、世界人口 四、遇到的问题 遇到的问题 1、数据分页,需要获取从1949-2018年数据,观察到有近20年参数:LAST20,由此推测获取近70年的参数可设置为:LAST70 2、2019年数据没有放上去,可以手动添加上去 3、将数据进行 行列转换 4、列名...
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ...... ...
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。 再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。 下文是原回答,希望能对你能有所启发。 如果我说,这个世界上人真的分三六九等,...
[数据结构与算法] 排序算法之归并排序与基数排序
归并排序 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。 基本思想 可以看到这种结构很像一棵完全二叉树,本文的归并排序我们采用递归去实现(也可采用迭代的方式去实现)。分阶段可以...
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合...
史上最牛逼的 Eclipse 快捷键,提高开发效率!
如果你在使用IDEA,请参考博主另外的一篇idea快捷键的博客。
相关热词 c# singleton c#中类的默认值是 c#各种进制之间的转换 c# 正则表达式保留汉字 c#后台跨域 c#基础代码大全 c#指定combox选择 c#关系 mono c# 相差毫秒 用c#做一个简易计算器
立即提问