C语言链表与文件 从文件读数据到链表里 5C

#include
#include
#include
#include

//定义全局变量
int isEmpty=0;//标志,判断链表是否为空

//!!!定义单链表结构体!!!
typedef struct Node{
int NUM;//类型总数
char NAME[100];//各类型名称
int num; //各类型下的货物总数
struct Node*next;
}Node;

//函数声明
Node*create(int n,Node*L);
Node*input(Node*L);
Node*output(Node*L);
Node*outnum(Node*L);
Node*outname(Node*L);
Node*current(Node*L);
void search(Node*L);
void print(Node*L);
void searchnum(Node*L);
void searchname(Node*L);
void display(int n,Node*L);
//========新增加的函数========
Node*append(Node*L);

//主函数
void main()
{
//创建文件
FILE*fp;
fp = fopen("storehouse.txt","w");
fwrite();
fclose(fp);
int x;
int n;//初次输入的大小
Node *L;
if(!(L=(Node *)malloc(sizeof(Node)))) //分配空间
{
printf("\n");
exit(1);
}

printf("欢迎使用我的仓库管理系统!\n"); 
while(1)
{
    //主菜单开始 
    printf("==========================\n");
    printf("1.显示货物类型列表\n");
    printf("2.增加货物类型\n");
    printf("3.删除货物类型\n");
    printf("4.货物入库\n");
    printf("5.货物出库\n");
    printf("6.库存显示\n");
    printf("7.退出\n");
    printf("==========================\n");
    //主菜单结束
    printf("选择1-7:");
    scanf("%d",&x); 
    switch(x)
    {
        case 1:;break;
        case 2:printf("请输入最初的货物类型数量:\n");
               scanf("%d",&n);
               create(n,L);
               break;
        case 3:;break;
        case 4:;break;
        case 5:;break;
        case 6:display(n,L);break;
        case 7:;break;
        default:printf("input error!\nplaese input1-7");
    }       
}           

}

想要读入货物信息:货物名称 货物价格 所属类型?这个怎么搞!
图片说明

//函数
//1.创建链表节点
Node*create(int n,Node*L)
{
Node*pTail=L;
L->next=NULL;
Node*p;
//利用尾插建立单链表
int i;
for(i=1;i<=n;i++)
{

p=(Node*)malloc(sizeof(Node));
if(p==NULL)
{
printf("申请内存空间失败!\n");
}

printf("请输入第%d种类型编号:",i);
scanf("%d",&p->NUM);
printf("请输入第%d种类型名称:",i);
scanf("%s",&p->NAME);
printf("请输入第%d种类型库存:",i);
scanf("%d",&p->num);
putchar('\n');
pTail->next=p;
pTail=p;
}
p->next=NULL;
return L;
}

//货物显示函数
void display(int n,Node*L)
{
Node*p;
p=(Node*)malloc(sizeof(Node));
p=L->next;;
int i=0;
for(i=0;i //{
//while(p!=NULL)
{
printf("第%d种类型名称:",p->NUM);
printf("%s\n",p->NAME);
printf("第%d种类型库存:",p->NUM);
printf("%d\n",p->num);
putchar('\n');
p=p->next;
//}
}

}

4个回答

看不懂你想表达啥.

如果是文件读写相关的话, 搜索相关API(函数)的用法, 例如 fread, fwrite

cara_celia
cara_celia 大方向就是想把货物信息附属于货物类型里
一年多之前 回复

你之前输入是从键盘输入,用的是scanf
输出是输出到显示屏,用的是printf
现在你无非就是输入输出都是到文件了,就改成fscanf 和 fprintf,它们是scanf和printf的兄弟,用法是一样的。

这里有个例子:https://blog.csdn.net/c_manito/article/details/71331218

如果你看了还是写不出,我再帮你。

cara_celia
cara_celia 我把它复制到dev c++里面运行好像不对(我就在桌面上建了一个input.txt的文本文件)
一年多之前 回复

建立定一个两个实体类型:
货物类型GoodsType, 货物本身Goods

 typedef struct GoodsType
{
    int type_id;
    char type_name[16];
        int type_num;
} GoodsType

typedef struct Goods
{
    char goods_name[16];
        char goods_num;
        int goods_type_id;
        // Other properties of goods
} Goods;

根据类型, 查询所有此类货物时, 只需要找到goods_type_id为type_id的货物.
根据货物, 查询所属类型时, 只需要找到type_id为goods_type_id的货物类型

可以连一个数据库,操作数据库就可以了,没必要非要存在一个文件里面

cara_celia
cara_celia 没学数据库呢
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C语言链表文件题请看看这个有什么问题
``` #include<stdio.h> #include<string.h> #include<stdlib.h> struct stu{ int num; char name[20]; int score; };//定义一个学生信息结构体 struct st{ int num; char name[20]; int score; struct st *next; };//定义一个学生信息链表结点 struct st *top,*rear;//定义链表头尾指针 struct st* push (struct stu x) { struct st *p; p=(struct st*)malloc(sizeof(struct st)); p->num=x.num; strcpy(p->name,x.name); p->score=x.score; p->next=NULL; if(rear==NULL) { rear=top=p; } else{ rear->next=p; rear=p; } return p; }//将结构体元素依次放入链表尾 void sort (struct st *top) { int flag; struct st *q,*s; int temp1,temp3; char temp2[20]; for(q=top->next;q->next!=NULL;q=q->next) { flag=0; s=q->next; if(q->num<s->num) { flag=1; temp1=q->num; q->num=s->num;s->num=temp1; temp3=q->score;q->score=s->score;s->score=temp3; strcpy(temp2,q->name);strcpy(q->name,s->name);strcpy(s->name,temp2); } if(flag==0) break; } }//按照学号从大到小的顺序进行排序节点 int main() { FILE *in,*out; in=fopen("in.txt","r"); out=fopen("out.txt","w");//打开文件 int n,m; struct stu card; scanf("%d",&n); m=n; while(m!=0) { fread(&card,sizeof(struct stu),1,in); if(card.num>0) { m--; push(card); } }//若学号符合要求则连人链表 sort(top); struct st *k; for(k=top;k!=NULL;k=k->next) { fwrite(&card,sizeof(struct stu),1,out); }//写入out文件 fclose(in); fclose(out);//关闭文件 return 0; } ``` 为啥运行后没有反应呢 out文件中没有我想要的数据
c语言如何把链表数据写入文件?
在写一个通讯录管理系统,然后要把联系人的信息结构体放到链表中,然后将链表里的信息写入文件中,下次打开时还能从该文件读出数据。 链表头指针TEL,结构体中有name,tel,style,mail 四项,存入“telephone.txt"中。 我是这样写的 /*退出程序时将数据写回telephone.txt进行更新*/ void ReadBack() { FILE *TEL = fopen("telephone.txt","wt+"); ID *te = id->next; while (te != NULL) { fwrite(id,sizeof(ID),1,TEL); te = te->next; } fclose(TEL); } 结果文件中是一串乱字 是 屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯?f 请给出代码,本人初学,多谢!
c语言存储链表数据问题
给你一个链表的头指针pHead,将一个结构体中的数据,比如: struct{ int num; char name[20]; char sex[10]; } 存储到磁盘中,然后下次启动程序之后又可以读取出来。 初次学习c语言,麻烦给出代码,谢谢
C语言归并有序单链表的问题
自己写了一个归并两个有序单链表成为一个有序单链表的程序,奈何运行没有结果。 求教各位网友,本人学生,望不吝赐教。 ``` #include<stdio.h> #include<stdlib.h> typedef struct Node{ int data; struct Node *next; } Node; Node* creatNode(int i) { Node *a = (Node *)malloc(sizeof(Node)); a->data = i; a->next = NULL; return a; } void insert(Node* p,int k){ Node* insertion; insertion = creatNode(k); while(p->next!=NULL){ p = p->next; } p->next = insertion; } void merge(Node*a,Node*b,Node**c) { Node *p, *q; //p和q指针分别指向a和b中最小的元素 p = a->next; q = b->next; *c = a; free(b); while(p!=NULL&&q!=NULL){ if(p->data<=q->data){ insert(*c, p->data); p = p->next; } else{ insert(*c, q->data); q = q->next; } } while(p!=NULL){ insert(*c, p->data); p = p->next; } while(q!=NULL){ insert(*c, q->data); q = q->next; } } int main() { Node *a = creatNode(0); insert(a, 2); insert(a, 4); insert(a, 6); Node *b = creatNode(0); insert(b, 1); insert(b, 3); insert(b, 5); Node *c = creatNode(0); merge(a, b, &c); while(c!=NULL){ printf("%d\t", c->data); c = c->next; } getchar(); return 0; } ```
C语言 如何调用链表里的数据?
老师教我们写了一个动态链表,但我想把功能扩展一下,能够调用里面的数据,不但怎么会。 我希望能用一个数组存放每个结构体的头地址,然后在指定第n个学生成绩时,能通过数组存放的头地址来输出对应存放的一组数据。注:不希望用二维数组存放所有数据,这样就不节省空间了。希望用一维数组仅存放头地址,来指向输出。 求大神帮帮我QAQ! ``` #include<stdio.h> #include<stdlib.h> #define LEN sizeof(struct Student) struct Student { int num; //数据结构中放一个学生编号 float score; //数据结构中放一个成绩 struct Student *next; //放一个指向本结构体的指针 }; int n; //定义一个全局变量,n表示存放的第几个结构体 struct Student *start(void) { struct Student *head, *p1, *p2; n = 0; p1 = p2 = (struct Student *) malloc(LEN); //在输入数值之前需要先分配内存 scanf("%d,%f", &p1->num, &p1->score); //输入要存储的数值 head = NULL; while (p1->num != NULL) { n = n + 1; if (n == 1)head = p1; //如果是输入了第一个数则链表开始分配内存,将第一个数据给head指针 else p2->next = p1; p2 = p1; p1 = (struct Student *) malloc(LEN); //在开辟一个新的P1内存存储下一个数据 scanf("%d,%f", &p1->num, &p1->score); } p2->next = NULL; return(head); } void print(struct Student *head) { struct Student *p; printf("\nNow,These %d records are:\n", n); p = head; while (p != NULL) { printf("%d,%3f\n", p->num, p->score); p = p->next; } } int main(void) { int s; struct Student *pt; pt = start(); print(pt); return 0; } ```
c语言怎么把一个双向链表写入文件
用c语言这一个双向链表,然后用fwrite写入文件,用fread读取,这个过程和单链表是一样的吗?
C语言写通讯录用数组好还是链表好?
C语言写通讯录,需要每次打开有数据,需要保存数据,删除,添加,修改..... 用链表是不是还要每次打开后读取文件数据到链表中,感觉太麻烦,到底用数组好还是链表更合适?如果用链表,如何实现链表数据的保存和读取?
关于C语言链表学习入门遇到瓶颈
怎样学习C语言中的链表,有没有什么好的文章博客,详细易懂,发一下链接,谢谢
C语言链表文件题请大佬帮我看看这个怎么编
![图片说明](https://img-ask.csdn.net/upload/201912/17/1576517034_442745.jpg) 求问代码 初学不会bian
C语言链表数据输入问题
有链表指针p1,想向结构体中的结构体时间中的变量日输入数值,如何写代码?
求助,关于c语言链表排序的问题
做了两个链表 每个节点内有一个学生的编号和成绩,现在要求把两个链表合并,然后按照学号升序排列 不知道为啥 第65行总是报错 我整了一个小时了 没发现哪里错了,貌似运行时候显示说我引用了一个不可以引用的地址?求助大神谢谢了 ``` #include <stdio.h> #include <stdlib.h> #define LEN sizeof(struct Person) struct Person { int num; float score; struct Person *next; }; struct Person *createPerson(); void printLink(struct Person *); struct Person *merge(struct Person *, struct Person *); struct Person *mergeAndSort(struct Person *, struct Person *); void sort(struct Person *[], int); int main() { struct Person *p1 = createPerson(); struct Person *p2 = createPerson(); // struct Person *pPerson = merge(p1, p2); struct Person *pPerson = mergeAndSort(p1, p2); printLink(pPerson); return 0; } void sort(struct Person *arr[], int n) { struct Person *tmp; for (int i = 0; i < n - 1; i++) { for (int j = i + 1; j < n; j++) { if (arr[i]->num > arr[j]->num) { //swap tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp; } } } } struct Person *mergeAndSort(struct Person *a, struct Person *b) { struct Person *arr[64]; struct Person *head; int i = 0, x; while (a != NULL) { arr[i] = a; a = a->next; i++; } while (b != NULL) { arr[i] = b; b = b->next; i++; } sort(arr, i); //reCreateLink head = arr[0]; head->next = arr[1]; for (x = 1; x < i - 1; x++) { (arr[i])->next = arr[i + 1]; } arr[x]->next = NULL; return head; } struct Person *merge(struct Person *a, struct Person *b) { struct Person *tmp = a; while (tmp->next != NULL) { tmp = tmp->next; } tmp->next = b; return a; } void printLink(struct Person *p) { while (p != NULL) { printf("%d\t%f\n", p->num, p->score); p = p->next; } } struct Person *createPerson() { struct Person *p1, *p2, *head; p1 = p2 = (struct Person *) malloc(LEN); scanf("%d %f", &p1->num, &p1->score); int size = 0; while (p1->num != 0) { size++; if (size == 1) { head = p1; } else { p2->next = p1; } p2 = p1; p1 = (struct Person *) malloc(LEN); scanf("%d %f", &p1->num, &p1->score); } p2->next = NULL; printf("Establish complete\n"); return head; }; ```
【c语言/链表】两个有序单链表合成为一个有序单链表,自己写的代码运行出错,求助
两个有序单链表合成为一个有序单链表,自己写的代码运行出错, 弄了很久都没解决,是我的思路错了,还是代码细节出问题了?求大神帮忙 编译通过,但是运行是直接提示exe停止运行 ``` #include<stdio.h> #include<stdlib.h> typedef struct node{ int data; struct node *next; }Node,*Link; Link newList(int a[],int n,Link head)//创建单链表 { //头插法 //创建头结点 Link node; int i; head=(Link)malloc(sizeof(Node)); head->next=NULL; //创建后续节点 for(i=n;i>0;i--)//由于是头插法,将数组元素从后往前放入单链表 { node=(Link)malloc(sizeof(Node)); node->data=a[i-1]; node->next=head->next; head->next=node; } return head; } void sortlink(Link one,Link two,Link three)//单链表合成 { int i,j,t; one=one->next; two=two->next; three=three->next; while(one||two) { i=one->data; j=two->data; if(i<=j) { three->data=i; one=one->next; three=three->next; } else { three->data=j; two=two->next; three=three->next; } } } void outputlink(Link three)//输出合成的单链表 { int a; three=three->next; while(three) { a=three->data; printf("%d",a); three=three->next; } } void main(){ int a[100],b[100],c[200],i,n,m,t; Link one,two,three; printf("请输入第一个链表的长度(不超过100)"); scanf("%d",&n); printf("请输入第二个链表的长度(不超过100)"); scanf("%d",&m); t=n+m; printf("请输入第一个链表的值(有序)"); for(i=0;i<n;i++) { scanf("%d",&a[i]); } printf("请输入第二个链表的值(有序)"); for(i=0;i<m;i++) { scanf("%d",&b[i]); } newList(a,n,one); newList(b,m,two); newList(c,t,three); sortlink(one,two,three); outputlink(three); } ```
求一个关于C语言中有关文件和链表的一个程序
我们老师布置了一道题:有A和B两个文件夹,每个文件夹下面都有若干子目录。但是 不知道目录里面文件的类型和具体的文件数目。现在要创建一个C文件夹,对C文件夹 的要求是:(1)C文件夹下面子目录的文件名和文件长度是A的,打开的内容是B的( 打开之后只要内容是B的,不要求内容完整与否)。(2)通过键入命令或是其他方式 C文件夹可以直接恢复到B文件夹。要求使用链表完成。 我们老师只把题目说了这些,他说对A、B文件夹的定义让我们自己讨论吧。能实现他所 说的基本情况也行。可是我完全没有头绪,希望各位大神帮帮忙。
动态链表统计字符频度(c语言)
用动态链表统计字符频度:(用c语言写,最好是调试成功的完整代码,并详细注释,字符不只是24个英文字符,还有数字,空格等) 创建动态链表、加节点; 已读入的字符数据传递给动态链表处理模块; 使用链表结构,完成字符的频度统计; 把动态链表模块嵌入到之前的工程中。 #include<stdio.h> typedef struct Student{ long num; float score; struct Student *next; } Student; int n; Student * create(){ Student *head,*p1,*p2; n = 0 ; //开辟新结点 同时使p1 p2指向该结点 p1=p2=(Student *)malloc(sizeof(Student)); scanf("%d %f",&p1->num,&p1->score); //此时head的指向为NULL head = NULL; while(p1->num != 0){ //n代表结点数 n=n+1; if(n==1){ //n=1 说明该结点是第一个结点 使head指向该结点 head = p1; }else{ //如果不是头结点 把p1所指向的结点链接在p2所指向结点的后面 p2->next = p1; } //使p2向前移 p2 = p1; //开辟新结点 使p1指向它 p1 = (Student *)malloc(sizeof(Student)); scanf("%d %f",&p1->num,&p1->score); } //循环退出之后 使p2指向NULL 因为链表的尾结点指向NULL p2->next = NULL; return head; } void main(){ Student *pt; pt = create(); printf("\nnum:%d\nscore:%5.1f\n",pt->num,pt->score ); return 0; } https://blog.csdn.net/u010703975/article/details/44975989 https://blog.csdn.net/weixin_42107106/article/details/83105509
c语言数据结构队列链表
由用户输入一个长度为5的队列,前5个数据存储在前5个,输入第6个数据时挤出第一个, 要求输入一组含毛刺的数据,削平毛刺,即输出削平波动过大的数据(两个相邻的一阶导数之差不能太大) 通过数组或链表实现 程序为死循环(while) 急求!!!!! 谢谢大佬的帮助,急求
简单的c语言链表的应用
如何将文件中的数据读入到程序中;用简单的c语言实现 例如某员工的编号 姓名 年龄 家庭住址等 求大神们解答,或者给一小段源程序 ,谢谢!!
【C语言-链表】请问怎么判断链表已经被销毁?
【问题描述】学习链表,销毁链表总感觉没有成功,请问怎么确定链表确实被销毁了?为什么其余节点的内容没有变化? 【代码】 ``` #include<stdio.h> #include<stdlib.h> #include<string.h> struct link_list { int num; char name[20]; struct link_list *next; }; typedef struct link_list ls; int icount = 0; /*链表长度*/ /*链表创建函数*/ ls* create() { ls *phead = NULL; ls *pend, *pnew; char flag; /******************************************************************* 链表循环赋值 *******************************************************************/ while(1) { pnew = (ls*)malloc(sizeof(struct link_list));/*分配空间*/ if(pnew == NULL) /*检测内存分配情况*/ { printf("内存分配失败\n"); return NULL; } if(0 == icount)/*如果是第一个节点*/ { icount++; pnew->next = NULL;/*尾指针指向空*/ phead = pnew;/*头指针指向头节点*/ pend = pnew;/*保存当前指针*/ printf("phead=%d\n", phead); printf("输入姓名:\n"); scanf("%s", pnew->name); printf("输入学号:\n"); scanf("%d", &pnew->num); printf("是否结束输入?y结束,n继续\n"); getchar(); flag = getchar(); if(flag == 'y') { return phead; } } else { icount++; pend->next = pnew; pend = pnew; pnew->next = NULL; printf("输入姓名:\n"); scanf("%s", pnew->name); printf("输入学号:\n"); scanf("%d", &pnew->num); printf("是否结束输入?y结束,n继续"); getchar(); flag = getchar(); if(flag == 'y') { return phead; } } } } /*遍历输出*/ void print(ls* phead) { ls* ptemp; ptemp = phead; while(NULL != ptemp) { printf("\n\n学号:%d\n姓名:%s\n", ptemp->num, ptemp->name); ptemp = ptemp->next; } } /*销毁*/ void damage(ls* phead) { ls *ptemp1; do { printf("删除前节点内容%d 地址phead=%d\n", phead->num, phead); ptemp1 = phead->next; /*保存当前销毁节点指向的地址*/ printf("被销毁节点指向的地址ptemp1=%d\n", ptemp1); free(phead); /*释放当前指针指向的节点空间*/ printf("释放后节点内容%d\n", phead->num); printf("释放后phead=%d\n", phead); phead = ptemp1; /*获取下一个节点地址*/ printf("重新赋值phead=%d\n\n", phead); }while(ptemp1 != NULL); } int main(void) { ls* phead = NULL; int lcat, lcat_del; phead = create(); printf("主函数头指针地址%d\n", phead); print(phead); damage(phead); return 0; } ``` 【运行结果】 ![图片说明](https://img-ask.csdn.net/upload/201912/21/1576889257_479546.png) ![图片说明](https://img-ask.csdn.net/upload/201912/21/1576889268_527655.png)
C语言链表的一道题目 求解答
![图片说明](https://img-ask.csdn.net/upload/201912/08/1575802423_222074.png) 模板如下![图片说明](https://img-ask.csdn.net/upload/201912/08/1575803952_583527.png)
数据结构C语言链表输入排序问题
题目: 持续输入 学号,姓名,地址 -1终止输入 _再按照学号从小到大顺序输出_ 个人感觉问题可能出在31行到38行 插入在链表最前面的时候会出现问题,其他情况没有问题 _测试 输入会错误的情况(插在开头):_ 3,sfdfs,sdfsfd 2,sdf,sdf,sfd -1 测试 输入会正确的情况: 3,sdf,sd,sfd 5,fsd,sdf 4,dsf,sdf -1 /////姓名和地址就乱打几个字符了。。。 下面是关于链的的数据的调试截图(输出_会错误的情况_,数据见上文 ) ![图片说明](https://img-ask.csdn.net/upload/201804/02/1522667445_697244.png) 直到输入 —1终止前 ,都是正确的(↑↑↑第一张调试图,排序也是对的) 但是终止后,就会无限输出开头的(↓↓↓最后输入的插到开头的那个数) 主链变成next永远指向自己的。 ![图片说明](https://img-ask.csdn.net/upload/201804/02/1522667643_272901.png) 虽然是用双链表写的,但是没什么关系。 个人感觉问题在出在指针返还值或者函数返还值上面,_步骤应该都是没有问题的_,调试了很多遍 ``` #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> #include <stdlib.h> typedef struct node { char name[20]; char add[20]; int nu; struct node *pre; struct node *next; }Newnode; Newnode sort( node *q, Newnode *inser ) /* sort+insert 找到位置插入 */ { Newnode *temp = q; while ( 1 ) { if ( temp->next == NULL && temp->nu < inser->nu ) /* 插在尾的情况,插入数大于所有temp + 第一个数时插在后面 */ { temp->next = inser; inser->pre = temp; return(*q); } if ( temp->pre == NULL && temp->nu > inser->nu ) /* 第一个数时插在前面 */ { /* printf("okOK"); */ /* temp->pre=inser; */ inser->next = temp; return(*inser); } } inser->next = temp; inser->pre = temp->pre; temp->pre->next = inser; temp->pre = inser; return(*q); } Newnode add( Newnode *q ) //q就是主链的地址 { int count = 0; while ( 1 ) { Newnode *newnode; newnode = (Newnode * ) malloc( sizeof(Newnode) ); scanf( "%d,", &newnode->nu ); if ( newnode->nu == -1 ) { return(*q); } newnode->next = NULL; newnode->pre = NULL; scanf( "%[^,]%[^\n]", newnode->name, newnode->add ); if ( q->pre == NULL && q->next == NULL && count == 0 ) { q = newnode; count++; /* 第一个数的输入,只输入一次 */ continue; }else *q = sort( q, newnode ); /* 从第二个数开始就插入,这里的指针传递对吗。。。 */ } return(*q); } void printall( Newnode *q ) { Newnode *temp = q; /* temp当前指针 */ printf( "%d %s %s\n", q->nu, q->name, q->add ); temp = temp->next; /* printf("%d %s %s\n",temp->nu,temp->name,temp->add); */ while ( temp != NULL ) { printf( "%d %s %s\n", temp->nu, temp->name, temp->add ); temp = temp->next; } /* printf("%d %s %s\n",temp->nu,temp->name,temp->add); */ } /* ////////////////////// */ int main( void ) { char inpu; int inpu2; Newnode p; p.pre = NULL; p.next = NULL; p = add( &p ); printall( &p ); } ``` 第一个特别输入 其他 找到位置,然后插入,排序一个插入一个。 调试调试吧。 再次说一下,步骤应该是没有问题的。(除了插在开头的情况会出现错误)调试了很多数据了。感觉问题应该出在指针返还上面。
130 个相见恨晚的超实用网站,一次性分享出来
相见恨晚的超实用网站 持续更新中。。。
我花了一夜用数据结构给女朋友写个H5走迷宫游戏
起因 又到深夜了,我按照以往在csdn和公众号写着数据结构!这占用了我大量的时间!我的超越妹妹严重缺乏陪伴而 怨气满满! 而女朋友时常埋怨,认为数据结构这么抽象难懂的东西没啥作用,常会问道:天天写这玩意,有啥作用。而我答道:能干事情多了,比如写个迷宫小游戏啥的! 当我码完字准备睡觉时:写不好别睡觉! 分析 如果用数据结构与算法造出东西来呢? ...
对计算机专业来说学历真的重要吗?
我本科学校是渣渣二本,研究生学校是985,现在毕业五年,校招笔试、面试,社招面试参加了两年了,就我个人的经历来说下这个问题。 这篇文章很长,但绝对是精华,相信我,读完以后,你会知道学历不好的解决方案,记得帮我点赞哦。 先说结论,无论赞不赞同,它本质就是这样:对于技术类工作而言,学历五年以内非常重要,但有办法弥补。五年以后,不重要。 目录: 张雪峰讲述的事实 我看到的事实 为什么会这样 ...
字节跳动视频编解码面经
三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时想着能进去就不错了,管他哪个岗呢,就同意了面试...
win10系统安装教程(U盘PE+UEFI安装)
一、准备工作 u盘,电脑一台,win10原版镜像(msdn官网) 二、下载wepe工具箱 极力推荐微pe(微pe官方下载) 下载64位的win10 pe,使用工具箱制作启动U盘打开软件, 选择安装到U盘(按照操作无需更改) 三、重启进入pe系统 1、关机后,将U盘插入电脑 2、按下电源后,按住F12进入启动项选择(技嘉主板是F12) 选择需要启...
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
Python——画一棵漂亮的樱花树(不同种樱花+玫瑰+圣诞树喔)
最近翻到一篇知乎,上面有不少用Python(大多是turtle库)绘制的树图,感觉很漂亮,我整理了一下,挑了一些我觉得不错的代码分享给大家(这些我都测试过,确实可以生成) one 樱花树 动态生成樱花 效果图(这个是动态的): 实现代码 import turtle as T import random import time # 画樱花的躯干(60,t) def Tree(branch, ...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小人工智障。 思路可以运用在不同地方,主要介绍的是思路。
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
Ol4网格生成以及优化
概述 先描述一下大致场景:以0.05为单元格大小生成网格,并在地图上绘制,绘制的时候需要区分海陆。本文以此需求为契机,简单描述一下该需求的实现以及如何来优化。 效果 实现 优化前 var source = new ol.source.Vector({ features: [] }); var vector = new ol.layer.Vector({ source...
11月19日科技资讯|华为明日发布鸿蒙整体战略;京东宣告全面向技术转型;Kotlin 1.3.60 发布
「极客头条」—— 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧。扫描上方二维码进入 CSDN App 可以收听御姐萌妹 Style 的人工版音频哟。 一分钟速览新闻点! 6G 专家组成员:速率是 5G 的 10 至 100 倍,预计 2030 年商用 雷军:很多人多次劝我放弃WPS,能坚持下来并不是纯粹的商业决定 ...
C语言魔塔游戏
很早就很想写这个,今天终于写完了。 游戏截图: 编译环境: VS2017 游戏需要一些图片,如果有想要的或者对游戏有什么看法的可以加我的QQ 2985486630 讨论,如果暂时没有回应,可以在博客下方留言,到时候我会看到。 下面我来介绍一下游戏的主要功能和实现方式 首先是玩家的定义,使用结构体,这个名字是可以自己改变的 struct gamerole { char n...
iOS Bug 太多,苹果终于坐不住了!
开源的 Android 和闭源的 iOS,作为用户的你,更偏向哪一个呢? 整理 | 屠敏 出品 | CSDN(ID:CSDNnews) 毋庸置疑,当前移动设备操作系统市场中,Android 和 iOS 作为两大阵营,在相互竞争的同时不断演进。不过一直以来,开源的 Android 吸引了无数的手机厂商涌入其中,为其生态带来了百花齐放的盛景,但和神秘且闭源的 iOS 系统相比,不少网友...
Python语言高频重点汇总
Python语言高频重点汇总 GitHub面试宝典仓库 回到首页 目录: Python语言高频重点汇总 目录: 1. 函数-传参 2. 元类 3. @staticmethod和@classmethod两个装饰器 4. 类属性和实例属性 5. Python的自省 6. 列表、集合、字典推导式 7. Python中单下划线和双下划线 8. 格式化字符串中的%和format 9. 迭代器和生成器 10...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip installselenium -ihttps://pypi.tuna.tsinghua.edu.cn/simple/ ...
程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
程序员该看的几部电影
1、骇客帝国(1999) 概念:在线/离线,递归,循环,矩阵等 剧情简介: 不久的将来,网络黑客尼奥对这个看似正常的现实世界产生了怀疑。 他结识了黑客崔妮蒂,并见到了黑客组织的首领墨菲斯。 墨菲斯告诉他,现实世界其实是由一个名叫“母体”的计算机人工智能系统控制,人们就像他们饲养的动物,没有自由和思想,而尼奥就是能够拯救人类的救世主。 可是,救赎之路从来都不会一帆风顺,到底哪里才是真实的世界?如何...
蓝桥杯知识点汇总:基础知识和常用算法
文章目录基础语法部分:算法竞赛常用API:算法部分数据结构部分 此系列包含蓝桥杯绝大部分所考察的知识点,以及真题题解~ 基础语法部分: 备战蓝桥杯java(一):一般输入输出 和 快速输入输(BufferedReader&amp;BufferedWrite) 备战蓝桥杯java(二):java编程规范和常用数据类型 备战蓝桥杯java(三):常用功能符以及循环结构和分支结构 备战蓝桥杯java(四...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东...
@程序员,如何花式构建线程?
作者 |曾建责编 | 郭芮出品 | CSDN(ID:CSDNnews)在项目和业务的开发中,我们难免要经常使用线程来进行业务处理,使用线程可以保证我们的业务在相互处理之间可以保证原子性...
破14亿,Python分析我国存在哪些人口危机!
一、背景 二、爬取数据 三、数据分析 1、总人口 2、男女人口比例 3、人口城镇化 4、人口增长率 5、人口老化(抚养比) 6、各省人口 7、世界人口 四、遇到的问题 遇到的问题 1、数据分页,需要获取从1949-2018年数据,观察到有近20年参数:LAST20,由此推测获取近70年的参数可设置为:LAST70 2、2019年数据没有放上去,可以手动添加上去 3、将数据进行 行列转换 4、列名...
实现简单的轮播图(单张图片、多张图片)
前言 刚学js没多久,这篇博客就当做记录了,以后还会完善的,希望大佬们多多指点。ps:下面出现的都是直接闪动,没有滑动效果的轮播图。 单张图片的替换 · ...
强烈推荐10本程序员在家读的书
很遗憾,这个春节注定是刻骨铭心的,新型冠状病毒让每个人的神经都是紧绷的。那些处在武汉的白衣天使们,尤其值得我们的尊敬。而我们这些窝在家里的程序员,能不外出就不外出,就是对社会做出的最大的贡献。 有些读者私下问我,窝了几天,有点颓丧,能否推荐几本书在家里看看。我花了一天的时间,挑选了 10 本我最喜欢的书,你可以挑选感兴趣的来读一读。读书不仅可以平复恐惧的压力,还可以对未来充满希望,毕竟苦难终将会...
Linux自学篇——linux命令英文全称及解释
man: Manual 意思是手册,可以用这个命令查询其他命令的用法。 pwd:Print working directory 意思是密码。 su:Swith user 切换用户,切换到root用户 cd:Change directory 切换目录 ls:List files 列出目录下的文件 ps:Process Status 进程状态 mkdir:Make directory ...
Python实战:抓肺炎疫情实时数据,画2019-nCoV疫情地图
今天,群里白垩老师问如何用python画武汉肺炎疫情地图。白垩老师是研究海洋生态与地球生物的学者,国家重点实验室成员,于不惑之年学习python,实为我等学习楷模。先前我并没有关注武汉肺炎的具体数据,也没有画过类似的数据分布图。于是就拿了两个小时,专门研究了一下,遂成此文。
疫情数据接口api
返回json示例 { "errcode":0,//0标识接口正常 "data":{ "date":"2020-01-30 07:47:23",//实时更新时间 "diagnosed":7736,//确诊人数 "suspect":12167,//疑是病例人数 "death":170,//死亡人数 "cur...
相关热词 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数 c#日期精确到分钟 c#自定义异常必须继承 c#查表并返回值 c# 动态 表达式树 c# 监控方法耗时 c# listbox c#chart显示滚动条
立即提问