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;
}
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C语言使用链表形式定义一个堆栈,并且在main函数中调用它

C语言使用链表形式定义一个堆栈,并且在main函数中调用它

C语言链表数据输入问题

有链表指针p1,想向结构体中的结构体时间中的变量日输入数值,如何写代码?

C语言链表实现学生信息统计(只写了三个功能 输入 删除 输出)

第一个问题 输出的第一组数据的第一个学期不输出 ```#include<stdio.h> //#include #include<string.h> #include<stdlib.h> //#include using namespace std; #define MAX 200 //宏定义,修改数值可以改变程序所包含的最大文件个数 #define LEN sizeof(struct student) int n; int count=0; struct student { char xueqi[20]; //学期 int no; //学号 int clas; //班级 char name[50]; //姓名 int chi; //语文成绩 int math; //数学成绩 int eng; //英语成绩 int com; //计算机成绩 int PE; //体育成绩 int sum; int aver; struct student *next; }; struct student *head=NULL; void menu(); void menu2(); struct student * Insert (struct student *st); void add(); void to_menu(); void to_menu2(); struct student * Delete(int no); //void save_data(); //void read_data(); void view_data(); void delete_data(); //void edit_data(); //void query_data_no(); //void tongji1(); //void tongji2(); //void tongji3(); //void tongji4(); //void query_data_tongji(); int main() //主函数 { int fun; // read_data(); menu(); while(1) { system("color fc"); //编辑菜单及字体颜色 printf("请输入功能号[0-6]:",&fun); scanf("%d",&fun); switch(fun) { case 0: // 退 出 break; case 1: //按班级输出学生成绩 view_data(); break; case 2: //输入学生记录 add(); break; case 3: //删除学生记录 delete_data(); // break; // case 4: //编辑学生记录 // edit_data(); // break; // case 5: //查询学生记录 // query_data_no(); // break; // case 6: //统计系统 // query_data_tongji(); // break; } if(fun==0) break; to_menu(); } } void add() //添加学生信息 { int b,k; while(1) { struct student *st; st= (struct student *)malloc(sizeof(struct student)); k=count; printf("\n请输入学生信息:"); printf("\n学期"); printf("\n-------------------------------------------------------------\n"); getchar(); gets(st->xueqi); printf("\n学号"); printf("\n-------------------------------------------------------------\n"); scanf("%d",&st->no); printf("\n班级"); printf("\n-------------------------------------------------------------\n"); scanf("%d",&st->clas); printf("\n姓名"); printf("\n-------------------------------------------------------------\n"); getchar(); gets(st->name); printf("\n语文"); printf("\n-------------------------------------------------------------\n"); scanf("%d",&st->chi); printf("\n数学"); printf("\n-------------------------------------------------------------\n"); scanf("%d",&st->math); printf("\n英语"); printf("\n-------------------------------------------------------------\n"); scanf("%d",&st->eng); printf("\n计算机"); printf("\n-------------------------------------------------------------\n"); scanf("%d",&st->com); printf("\n体育"); printf("\n-------------------------------------------------------------\n"); scanf("%d",&st->PE); st->sum=st->chi+st->math+st->eng+st->com+st->PE; st->aver=st->sum/5; count++; head=Insert(st); free(st); printf("\n\n继续添加学生信息[1-yes 0-no]:"); scanf("%d",&b); if(b==0) break; } // save_data(); } struct student * Insert (struct student *stud) { //原链表按num从小到大排列,参数stud是要插入结点 struct student *p0; // 待插入结点 struct student *p1; // p0插入p1之前、p2之后 struct student *p2; p1 = head; p0 = stud; if ( head == NULL ){//第一种情况,链表为空 head = p0;//p0成为链表中第一结点 p0->next = NULL; }else { while ((p0->no > p1->no) && (p1->next != NULL)) {//查找待插入位置 p2 = p1; p1 = p1->next; } if(p0->no <= p1->no) {//表示是从(p0->num > p1->num) 条件跳出循环 if (p1 == head) { //如果p1是表头结点,向第一结点之前插入 head = p0; p0->next = p1; } else{//向p1之前、p2之后插入 p2->next = p0; p0->next = p1; } } else { //表示从 (p1->next != NULL)条件跳出循环,p0插入表尾结点之后 p1->next = p0; p0->next = NULL; } } return (head); } void menu() //输出主菜单函数 { system("cls"); //清空屏幕函数 printf("\n"); printf("\t\t\t*******************************\n"); printf("\t\t\t* \n"); printf("\t\t\t 学生成绩管理系统 \n"); printf("\t\t\t \n"); printf("\t\t\t [0] 退出 \n"); printf("\t\t\t [1] 按学号输出学生成绩 \n"); printf("\t\t\t [2] 输入学生记录 \n"); printf("\t\t\t [3] 删除学生记录 \n"); printf("\t\t\t [4] 编辑学生记录 \n"); printf("\t\t\t [5] 查询学生记录 \n"); printf("\t\t\t [6] 统计学生记录 \n"); printf("\t\t\t \n"); printf("\t\t\t*******************************\n"); } void menu2() //输出统计系统菜单 { system("cls"); //清空屏幕函数 printf("\n"); printf("\t\t\t********************************\n"); printf("\t\t\t* \n"); printf("\t\t\t 统计系统 \n"); printf("\t\t\t \n"); printf("\t\t\t [0] 退出 \n"); printf("\t\t\t [1] 输出班级学生成绩 \n"); printf("\t\t\t [2] 班级各科成绩平均数 \n"); printf("\t\t\t [3] 班级各科成绩总分 \n"); printf("\t\t\t [4] 不及格名单 \n"); printf("\t\t\t \n"); printf("\t\t\t*******************************\n"); } void to_menu() //to_menu函数 { char c1,c2; printf("\n\n\n按回车键返回主菜单..."); scanf("%c%c",&c1,&c2); menu(); //调用menu函数 } void to_menu2() //to_menu函数 { char c1,c2; printf("\n\n\n按回车键返回上一菜单..."); scanf("%c%c",&c1,&c2); menu2(); //调用menu函数 } void view_data() { if(head==NULL) return; struct student *p=head; printf("学期\t学号\t\t班级\t\t姓名\t\t语文\t数学\t英语\t计算机\t体育\t总分\t平均分"); printf("\n-----------------------------------------------------------------------------------------------------------------\n"); do{printf("%s\t\t%d\t%-15d%s\t\t%-8d%-8d%-8d%-8d%-8d%-8d%-8d\n",p->xueqi,p->no,p->clas,p->name,p->chi,p->math,p->eng,p->com,p->PE,p->sum,p->aver); p=p -> next; }while(p!=NULL); } struct student * Delete(int no) {//删除值为num的结点 int sb=0; struct student *p1; // 指向要删除的结点 struct student *p2; //指向p1的前一个结点 if (head == NULL) { //空表 return (head); } p1 = head; while(no!= p1->no && p1->next != NULL) { //查找要删除的结点 p2 = p1; p1 = p1->next; } if (no == p1->no) { printf("\n\n删除(学号-%d)成功!",no); sb=1;// 找到了 if (p1 == head) //要删除的是头结点 head = p1->next; else// 要删除的不是头结点 p2->next = p1->next; // free(p1); //释放被删除结点所占的内存空间 } if(sb==0) printf("\n\n删除(学号-%d)成功!",no); return (head); //返回新的表头 } void delete_data() //删除学生记录 { int j; int no; j=count; view_data(); printf("\n请输入要删除学生的学号:"); scanf("%d",&no); head=Delete(no); // save_data(); } ``` ![图片说明](https://img-ask.csdn.net/upload/201906/04/1559647034_557.png)

ARM开发中,用C语言 实现双向链表

各位前辈 你们好! 如题,我在ARM开发中,需要用到双向链表来管理接受到的数据。 我对双向链表不是很理解,在实际编程的时候遇到一些问题。 希望得到各位的帮助。 我本来打算用数组来做的。但是发现添加数据和删除数据都比较麻烦。 最后决定用双向链表来完成。 使用双向链表的目的 1,链表可以接受不超过64个的数据(结构体) 2,在链表中查询数据ID,可以进行添加和删除还有覆盖相同ID的数据 3,遍历链表中的数据ID,调用数据信息。 项目管理是一个外国人,我看他用链表不用malloc和free,我也想按照他的写法去找列子, 但是国内的列子都是有带malloc和free的。 因为时限快到了,我又学艺不精,所以向各位求教相应的信息或者实现的代码。 谢谢!

老师要求对链表的每个信息进行排序,但这个链表排序不会啊,求大神求代码?

#include<stdio.h> #include<math.h> #include<string.h> #include<stdlib.h> char ppzz[100] = ""; char lwjj[100] = ""; struct PPZBOOK { char author[1000]; char name[1020]; char isbn[120]; char data[115]; char id[110]; char status[110]; struct PPZBOOK * next; }; struct PPZBOOK * Creat(); void AddBook(struct PPZBOOK * head); void DeleteBook(struct PPZBOOK * head); void PrintBookList(struct PPZBOOK * head); void SearchBook(struct PPZBOOK * head); void SaveBook(struct PPZBOOK * head); struct PPZBOOK * Creat() { struct PPZBOOK * head; head = (struct PPZBOOK *)malloc(sizeof(struct PPZBOOK)); head->next = NULL; return head; } void SaveBook(struct PPZBOOK * head) { struct PPZBOOK *p; FILE *fp; p = head; fp = fopen("books.txt", "w+"); while (p->next != NULL) { p = p->next; fprintf(fp, "|%-6.6s|%-10.10s|%-10.10s|%-10.10s|%-12.12s|%-6.6s|\n", p->id, p->name, p->author, p->isbn, p->data, p->status); } fclose(fp); printf("已将图书数据保存到 books.txt 文件\n"); } void AddBook(struct PPZBOOK *head) { struct PPZBOOK *s, *p; char hihi = 'Y'; p = head; while (p->next != NULL) { p = p->next; } while (hihi == 'Y' || hihi == 'y') { s = (struct PPZBOOK *)malloc(sizeof(struct PPZBOOK)); printf("请输入图书书号: "); fflush(stdin); scanf("%s", s->id); printf("请输入图书书名: "); fflush(stdin); scanf("%s", s->name); printf("请输入图书作者名: "); fflush(stdin); scanf("%s", s->author); printf("请输入图书ISBN: "); fflush(stdin); scanf("%s", s->isbn); printf("请输入图书出版时间: "); fflush(stdin); scanf("%s", s->data); printf("请输入图书状态: "); fflush(stdin); scanf("%s", s->status); p->next = s; p = s; s->next = NULL; printf(" ━━━━ 添加成功!━━━━\n"); printf("继续添加?(Y/N):"); fflush(stdin); scanf("%c", &hihi); if (hihi == 'N' || hihi == 'n') { system("cls"); break; } else if (hihi == 'Y' || hihi == 'y') { system("cls"); continue; } } SaveBook(head); return; } void SearchBook(struct PPZBOOK *head) { struct PPZBOOK * p; p = head; char temp[20]; char ttt[10]; int flog = 0; if (head == NULL || head->next == NULL) { printf(" ━━━━ 图书库为空!━━━━\n"); } else { printf("请输入你要查找的类型\n"); scanf("%s", &ttt); if (strcmp("书名", ttt) == 0) { printf("请输入您要查找的书名: "); fflush(stdin); scanf("%s", &temp); while (p != NULL) { if (strcmp(p->name, temp) == 0) { printf("图书已找到!\n"); printf("书号: %s\t\n", p->id); printf("书名: %s\t\n", p->name); printf("作者名: %s\t\n", p->author); printf("ISBN: %s\t\n", p->isbn); printf("出版时间: %s\t\n", p->data); printf("状态: %s\t\n", p->status); flog = 1; } if (p->next == NULL) { printf("查询完毕!\n"); } p = p->next; } if (flog == 0) { printf("抱歉,你要找的书不存在!\n"); } } else if (strcmp("作者", ttt) == 0) { printf("请输入您要查找的作者: "); fflush(stdin); scanf("%s", &temp); while (p != NULL) { if (strcmp(p->author, temp) == 0) { printf("图书已找到!\n"); printf("书号: %s\t\n", p->id); printf("书名: %s\t\n", p->name); printf("作者名: %s\t\n", p->author); printf("ISBN: %s\t\n", p->isbn); printf("出版时间: %s\t\n", p->data); printf("状态: %s\t\n", p->status); flog = 1; } if (p->next == NULL) { printf("查询完毕!\n"); } p = p->next; } if (flog == 0) { printf("抱歉,你要找的书不存在!\n"); } } else if (strcmp("ISBN", ttt) == 0) { printf("请输入您要查找的ISBN: "); fflush(stdin); scanf("%s", &temp); while (p != NULL) { if (strcmp(p->isbn, temp) == 0) { printf("图书已找到!\n"); printf("书号: %s\t\n", p->id); printf("书名: %s\t\n", p->name); printf("作者名: %s\t\n", p->author); printf("ISBN: %s\t\n", p->isbn); printf("出版时间: %s\t\n", p->data); printf("状态: %s\t\n", p->status); flog = 1; } if (p->next == NULL) { printf("查询完毕!\n"); } p = p->next; } if (flog == 0) { printf("抱歉,你要找的书不存在!\n"); } } } } void PrintBookList(struct PPZBOOK * head) { struct PPZBOOK * p; if (head == NULL || head->next == NULL) { printf(" ━━━━ 没有图书记录! ━━━━\n"); return; } p = head; while (p->next != NULL) { p = p->next; printf("%s %s %s %s %s %s\n", p->id, p->name, p->author, p->isbn, p->data, p->status); } printf("\n"); } void DeleteBook(struct PPZBOOK * head) { struct PPZBOOK *s, *p; char temp[20]; int panduan; panduan = 0; p = s = head; if (head == NULL || head->next == NULL) { printf(" ━━━━ 图书库为空!━━━━\n"); } else { printf("请输入您要删除的书名:"); scanf("%s", temp); while (p != NULL) { if (strcmp(p->name, temp) == 0) { panduan++; break; } p = p->next; } if (panduan == 1) { while (s->next != p) { s = s->next; } s->next = p->next; free(p); printf("━━━━ 删除成功! ━━━━\n"); system("cls"); } else { printf("您输入的书目不存在,请确认后输入!\n"); } } } void ChangeBook(struct PPZBOOK * head) { struct PPZBOOK *pp; pp = head; if (head == NULL || head->next == NULL) { printf(" ━━━━ 图书库为空!━━━━\n"); } else { char tmp[100]; char ttt[100]; int g = 0; int flog = 0; printf("请输入你要修改的种类:φ(>ω<*) \n"); printf("1.修改书名\n2.修改作者\n3.修改状态\n友情提示:按其他数字键可以退出哦(*/ω\*)\n"); scanf("%d", &g); if (g == 1) { printf("请输入你要修改的书名:\n"); fflush(stdin); scanf("%s", &tmp); while (pp != NULL) { if (strcmp(pp->name, tmp) == 0) { printf("\n图书已找到!\n"); printf("\n"); printf("请输入你要它变为什么:\n"); scanf("%s", &ttt); strcpy(pp->name, ttt); flog = 1; } if (pp->next == NULL) { printf("正在为你修改!\n"); } pp = pp->next; } if (flog == 1) { printf("修改成功!\n"); } else { printf("修改失败!可能是你输入的信息我没找到\n"); } } else if (g == 2) { printf("请输入你要修改的作者:\n"); fflush(stdin); scanf("%s", &tmp); while (pp != NULL) { if (strcmp(pp->author, tmp) == 0) { printf("\n图书已找到!\n"); printf("\n"); printf("请输入你要它变为什么:\n"); scanf("%s", &ttt); strcpy(pp->author, ttt); flog = 1; } if (pp->next == NULL) { printf("正在为你修改!\n"); } pp = pp->next; } if (flog == 1) { printf("修改成功!\n"); } else { printf("修改失败!可能是你输入的信息我没找到\n"); } } else if (g == 3) { printf("请输入你要修改的状态:\n"); fflush(stdin); scanf("%s", &tmp); while (pp != NULL) { if (strcmp(pp->status, tmp) == 0) { printf("\n图书已找到!\n"); printf("\n"); printf("请输入你要它变为什么:\n"); scanf("%s", &ttt); strcpy(pp->status, ttt); flog = 1; } if (pp->next == NULL) { printf("正在为你修改!\n"); } pp = pp->next; } if (flog == 1) { printf("修改成功!\n"); } else { printf("修改失败!可能是你输入的信息我没找到\n"); } } else { printf("正在退出。。。。。。。。已退出\n"); } } } int Mima(char lwj[]) { if ((strcmp(lwjj, lwj) == 0) || (strcmp("123456", lwj) == 0)) { return 2; } else { return 1; } } void M(char q[]) { FILE *fp; fp = fopen("pwd.dat", "w+"); fprintf(fp, "%s\n", q); fclose(fp); strcpy(lwjj, q); } int User(char ppz[]) { if ((strcmp(ppzz, ppz) == 0) || (strcmp("admin", ppz) == 0)) { return 2; } else { return 1; } } void U(char p[]) { FILE *fp; fp = fopen("zhl是小可爱.txt", "w+"); fprintf(fp, "%s\n", p); fclose(fp); strcpy(ppzz, p); } void menu() { int choice = 0; struct PPZBOOK * head; head = NULL; while (1) { printf("●○○○○○○○○○○○○○○○○○○○○○○○○○○●\n"); printf("○ ○\n"); printf("○ 1、显示所有书籍 ○\n"); printf("○ 2、添加书籍信息 ○\n"); printf("○ 3、修改书籍信息 ○\n"); printf("○ 4、删除书籍信息 ○\n"); printf("○ 5、查询书籍信息 ○\n"); printf("○ 6、结束应用程序 ○\n"); printf("○ ○\n"); printf("●○○○○○○○○○○○○○○○○○○○○○○○○○○●\n"); printf("请选择:"); fflush(stdin); scanf("%d", &choice); switch (choice) { case 1: PrintBookList(head); break; case 2: if (head == NULL) { head = Creat(); } AddBook(head); break; case 3: ChangeBook(head); break; case 4: DeleteBook(head); break; case 5: SearchBook(head); break; case 6: printf("\n"); printf("**************** 感谢使用lwj的图书管理系统 ****************\n"); exit(1); default: printf(" ━━━━ (╬ ̄皿 ̄)=○#( ̄#)3 ̄) 你是傻的吗?<( ̄ ﹌  ̄)@m 这都会输入错误,快点请重新输入!━━━━\n"); break; } } } void jiemian() { char mima[100]; char user[100]; int count = 1; int s = 0, l = 0, j; printf("亲爱的用户,您是否已有账号密码了呢? ̄ω ̄=\n"); printf("如果有的话请按1,否则请按2\n"); while (1) { scanf("%d", &j); if (j == 1) { system("cls"); printf("●○○○○○○○○○○○○○○○●\n"); printf("○ ○\n"); printf("○ 请输入用户名和密码: ○\n"); printf("○ ○\n"); printf("●○○○○○○○○○○○○○○○●\n"); printf("你只有5次机会来输入正确的用户名和密码。(^_?)☆\n"); while (count < 6) { printf("第%d次\n", count); printf("请输入用户名:"); scanf("%s", user); l = User(user); printf("请输入密码:"); scanf("%s", &mima); s = Mima(mima); if (l == 2 && s == 2) { system("cls"); menu(); } else { printf("用户名或密码错误!b( ̄▽ ̄)d\n"); } count++; } break; } else { printf("(o?▽?)o 请输入你要注册的用户名:(ノ ̄▽ ̄)\n"); scanf("%s", user); U(user); printf("(o?▽?)o 请输入你要注册的密码:(ノ ̄▽ ̄)\n"); scanf("%s", mima); M(mima); printf("哇塞!注册成功了耶ヽ( ̄▽ ̄)?\n"); printf("请按1登录系统吧!(*/ω\*)\n"); } } } int main() { jiemian(); return 0; }

用C语言完成以下功能:数据的录入、显示,链表的创建,插入数据,删除数据。每个功能用一个函数来实现。

1)定义家庭住址结构体adress,包含成员有:省份、城市、街道;定义成绩结构体score,包含成员有:“C程序设计”、“Java程序设计”、“Basic成绩设计”的成绩;再定义学生结构体student,包含的成员有:学号、姓名、性别、成绩、家庭住址、下一个结点指针,其中成绩类型定义为score类型的结构体,家庭住址的类型定义为adress结构体。下一个结点指针的类型定义为学生结构体。 2)定义头结点的结构体head,其成员为指向学生结构体的指针。 3)插入数据时学号要按照升序排列。

c语言程序设计-将文件内容赋到一个链表里 然后写一个增加节点的函数 将新增加的节点连到那个链表后面

***********就是功能1和功能2的实现************ #include<stdio.h> #include<stdlib.h> #include<string.h> #include<malloc.h> //定义全局变量 int isEmpty=0;//标志,判断链表是否为空 //!!!定义单链表结构体!!! typedef struct Node{ int NUM;//类型总数 char NAME[100];//各类型名称 int num; //各类型下的货物总数 struct Node*next; }Node; //函数声明 Node*create(int n,Node*L); Node* delet(Node*L,int del_n); 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"); int x; int n;//初次输入的大小 int del_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:printf("请输入最初的货物类型数量:\n"); scanf("%d",&n); create(n,L); break; case 2: break; case 3:printf("******请输入要删除货物类型的编号:******\n"); scanf("%d",&del_n); printf("删除成功!\n"); delet(L,del_n); break; case 4:;break; case 5:;break; case 6:display(n,L);break; case 7:printf("bye!see you next time!\n"); exit(0); 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<n;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; //} } } //删除货物类型 Node*delet(Node*L,int del_n) { Node *del_p,*p; p = L; del_p = L; if(del_n==1) { L=p->next; free(del_p); } int i; for(i=1;i<del_n-1;i++) { p=p->next; } del_p=p->next; p->next=del_p->next; free(del_p); return L; }

单链表中我想删除一个数据域的值为x的节点编写了这个函数运行出来不能实现这个功能请问为什么?大佬们

``` void SC(splist*L) { printf("请输入要删除的数"); int a; scanf("%d",&a); splist *p; splist *h; p=L->next; while(p!=NULL) { if(p->data=a) { L->next=L->next->next; h=p; free(h); break; } else if(p->next->data=a) { p->next=p->next->next; break; } p=p->next; } } ```

C语言写入数据到二进制文件失败

# 相关代码如下 # 我在add()调用lessondatewrite()写进去了 #但是lessondateltater()调用lessondatewrite()没写进去 # 调试结果![图片说明](https://img-ask.csdn.net/upload/201811/02/1541169947_50238.png) #运行结果 英语行的 40 应该变成39 ![图片说明](https://img-ask.csdn.net/upload/201811/02/1541169992_687847.png) ``` typedef struct //定义一个Lesson类型的结构体 { char name[50]; char techer[50]; char location[50]; char time[50]; int number; }LESSON; /*课程结构体参数 课程名 char 50字节 授课老师 char 50字节 位置 char 50字节 开课时间 char 50字节 座位数 int 4字节 结构体大小总计 204字节*/ LESSON lessondatewrite(FILE *fl,LESSON date)//这是一个结构体类型的函数,它可以写入课程数据,接受一个文件指针 { fflush(fl);//刷新缓存区 使将要输入的数据写入硬盘 一次性输入大量数据时使用 避免输入失败 fwrite(&date,sizeof(LESSON),1,fl); } void add()//添加一个课程数据 { FILE *lessondate; LESSON lesson={0};// 声明一个LESSON类型的变量为lesson if((lessondate=fopen("lessondate","rb+"))==NULL)//若文件不存在,则建立文件 { lessondate=fopen("lessondate","wb+"); //rb+打开二进制文本文件,允许读写,若不存在返回空 //wb+新建二进制文本文件,允许读写。如果文件存在则删除文件重建 } printf("请依次输入如下数据,课程名,授课老师,教室位置,开课时间(xx月xx日xx:xx),座位数(各数据以空格隔开,回车结束)\n"); scanf("%s %s %s %s %d",&lesson.name,&lesson.techer,&lesson.location,&lesson.time,&lesson.number); //scanf在接收字符串时 不会接收空白符(空格与回车) 逗号或其他都能接收 //%s不能使用char 而是char[] fseek(lessondate,0L,SEEK_END); lessondatewrite(lessondate,lesson); fclose(lessondate); system("cls"); admin(); } void lessondatelater(int choose) { FILE *lessondate; LESSON lesson={0}; int i; lessondate=fopen("lessondate","rb+"); for(i=0;i<choose;i++) { lesson=lessondateread(lessondate);//给读取函数传递一个文件指针 假定有是三个结构体A B C 循环结束后光标在C前面B后面 } fseek(lessondate,-204L,SEEK_CUR);//后退到上一个结构体 此时光标在B前面 lesson=lessondateread(lessondate);//读取这个结构体数据 读取B的数据 此时光标前进到C前面 lesson.number--;//修改结构体数据 fseek(lessondate,-204L,SEEK_CUR);//后退到上一个结构体 此时光标在B前面 lessondatewrite(lessondate,lesson);//写入修改后结构体数据 覆盖B } ```

C语言 数据结构 创建链表的时候,在for循环中的变量是否每次循环结束都被销毁

如题,先谢谢大神解答。 ![图片说明](https://img-ask.csdn.net/upload/201610/04/1475513733_456747.png) ![图片说明](https://img-ask.csdn.net/upload/201610/04/1475513745_903732.png)

线性链表数据结构的插入与删除

在你自己的文件下,建立一个C语言程序SL.C,完成下列要求: 1、 定义长度为10的数组,输入9个数据(1,3,4,5,7,9,12,20,28),然后输出这九个数组元素的存储单元地址和相应的数值; 2、 建立一个数组元素的插入函数,能够按照数据从小到大的次序自动找到插入位置完成插入元素的操作,调用此函数插入数据15,然后输出数值元素的存储单元地址和相应的数值; 3、 建立一个数组元素的删除函数,能够按照数据自动删除指定元素的操作,调用此函数删除数据值为9的数组元素,然后输出数组元素的存储单元地址和相应的数值。 在你自己的文件下,建立一个C语言程序LL.C,完成下列要求: 4、 定义一个单链表LLIST,按数据1,3,4,5,7,9,12,20,28的次序建立各结点,形成单链表LLIST,然后按链表顺序输出九个结点的存储单元地址和相应的数值; 5、 建立一个插入函数,将数据15作为结点按照从小到大的次序自动插入到链表的相应位置上,完成插入结点的操作,形成新的链表LLIST,然后输出链表结点的存储单元地址和相应的数值; 6、 建立一个删除函数,将链表中第七个结点删除,形成新的链表LLIST,然后输出链表结点的存储单元地址和相应的数值;

C语言:在子函数中修改结构变量中元素的值

要写一个处理学生成绩信息的程序,使用单向链表,创建,遍历已经没有问题,但在修改结点的数据时出现问题,输入数据后程序就停止运行。 修改的思路是先根据学号定位到指定结点,然后修改数据,修改函数如下 ``` void Correct(float *a,float *b,float *c,float *d,float *e,float *f) { printf("请依次输入学生正确的的英语 数学 物理 C语言成绩\n"); scanf("%f%f%f%f",a,b,c,d); *e=*a+*b+*c+*d; *f=*e/4; } ``` 程序执行到上面时总是出现问题,不知道是什么原因,也尝试过其他修改的方法:只传结点的地址,同样出现问题;查找与修改函数合并,找到结点直接修改也是有问题,不知道为什么,代码有些长,还希望有人可以指导一下,非常感谢。 完整代码如下: ``` #include<stdio.h> #include<stdlib.h> #include<string.h> struct stu{ char num[15]; char name[20]; float EngSco; float MathSco; float PhySco; float CSco; float TotalSco; float AveSco; int GoOn; struct stu * next; }; void PrtMenu(); void CreatList(struct stu **headp);/*创建链表并输入数据*/ void PrtInf(struct stu *headp);/*输出链表中的某些数据*/ void Correct(float *a,float *b,float *c,float *d,float *e,float *f);/*修改链表中某结点元素的数据*/ void PrtData(struct stu *headp);/*输出链表中的某些数据*/ struct stu* Search(struct stu *headp);/*定位需要修改的结点的地址*/ int main() { int choice; struct stu *head=NULL,*revise=NULL; Order: PrtMenu(); scanf("%d",&choice); if(choice<0||choice>5){ printf("指令错误,请重新输入指令\n"); goto Order; } else switch(choice) { case 0: system("CLS"); break; case 1: CreatList(&head);break; case 2: PrtInf(head);break; case 3: revise=Search(head); Correct(&(revise->EngSco),&(revise->MathSco),&(revise->PhySco),&(revise->CSco),&(revise->TotalSco),&(revise->AveSco));break; case 4: PrtData(head);break; case 5: return 0; } goto Order; return 0; } void PrtMenu() { printf("-----功能选择-----\n"); printf("0.清屏并显示菜单\n"); printf("1.输入学生信息\n"); printf("2.输出学生各项信息\n"); printf("3.修改学生指定数据项的内容\n"); printf("4.输出各位同学的学号、姓名、四门课的总成绩和平均成绩\n"); printf("5.退出系统\n"); printf("------------------\n"); printf("请输入指令前的序号\n"); } void CreatList(struct stu **headp) { struct stu *loc_head=NULL,*tail; loc_head=(struct stu*)malloc(sizeof(struct stu)); printf("请输入学生的学号\n"); scanf("%s",loc_head->num); printf("请输入学生的姓名\n"); scanf("%s",loc_head->name); printf("请依次输入学生的英语 数学 物理 C语言成绩\n"); scanf("%f%f%f%f",&loc_head->EngSco,&loc_head->MathSco,&loc_head->PhySco,&loc_head->CSco); loc_head->TotalSco=loc_head->EngSco+loc_head->MathSco+loc_head->PhySco+loc_head->CSco; loc_head->AveSco=loc_head->TotalSco/4; tail=loc_head; printf("继续输入请按1,输入完成请按0\n"); scanf("%d",&tail->GoOn); if(tail->GoOn==0) goto end; else while(1) { tail->next=(struct stu*)malloc(sizeof(struct stu)); tail=tail->next; printf("请输入学生的学号\n"); scanf("%s",tail->num); printf("请输入学生的姓名\n"); scanf("%s",tail->name); printf("请依次输入学生的英语 数学 物理 C语言成绩\n"); scanf("%f%f%f%f",&tail->EngSco,&tail->MathSco,&tail->PhySco,&tail->CSco); tail->TotalSco=tail->EngSco+tail->MathSco+tail->PhySco+tail->CSco; tail->AveSco=tail->TotalSco/4; printf("继续输入请按1,输入完成请按0\n"); scanf("%d",&tail->GoOn); if(!tail->GoOn) break; } end: tail->next=NULL; *headp=loc_head; } void PrtInf(struct stu *headp) { struct stu *current=headp; printf("学号\t姓名\t英语\t高数\t物理\tC语言\t\n"); while(current) { printf("%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t\n",current->num,current->name,current->EngSco,current->MathSco,current->PhySco,current->CSco); current=current->next; } } void Correct(float *a,float *b,float *c,float *d,float *e,float *f) { printf("请依次输入学生正确的的英语 数学 物理 C语言成绩\n"); scanf("%f%f%f%f",a,b,c,d); *e=*a+*b+*c+*d; *f=*e/4; } void PrtData(struct stu *headp) { struct stu *current=headp; printf("学号\t姓名\t总分\t平均分\t\n"); while(current) { printf("%s\t%s\t%.2f\t%.2f\t\n",current->num,current->name,current->TotalSco,current->AveSco); current=current->next; } } struct stu* Search(struct stu *headp) { struct stu *current=headp; char aim[15]; int flag; printf("请输入要修改数据的学生的学号\n"); scanf("%s",aim); while(current) { flag=strcmp(current->num,aim); if(flag=0) break; else current=current->next; } return current; } ```

链表的插入 插入函数写好了 在main函数中调用 然而最后的结果并没有实现插入的功能

struct Link *InsertNode01(struct Link *head,int nodeData,int i) { int j=1; struct Link *pr = head, *p, *temp = NULL; p = (struct Link *)malloc(sizeof(struct Link)); if(p == NULL) { printf("NO enough memory"); exit(0); } p->next = NULL;//置新节点的指针域为空 p->data = nodeData;//为新节点赋数据域的值 if(head == NULL)//插入新节点前,对原链表的一个判断,不同情况插入的方法不同 { head = p; } else { if(i = 1) { p->next = head; head = p; } else { while(j < i && pr->next != NULL) { temp = pr; pr = pr->next; j++; } if(j = i) { pr = temp; p->next = pr->next; pr->next = p; } else { pr -> next = p; } } } return(head); }; ``` ``` ![图片说明](https://img-ask.csdn.net/upload/201605/21/1463788763_873714.png) ``` int main() { int i = 0; int place = 0; int nodeData; char c; struct Link *head = NULL;//指向链表头 printf("Do you want to append a new node(Y/N)"); scanf(" %c",&c); while(c=='Y' || c=='y') { head = AppendNode(head); DispLink(head);//显示当前各节点信息 printf("Do you want to append a new node(Y/N)"); scanf(" %c",&c); i++; } printf("%d new nodes have been appended!\n",i); printf("please input the nodeData you want to delete:"); scanf("%d",&nodeData); DeleteNode(head,nodeData); DispLink(head); printf("please input the nodeData you want to insert:"); scanf("%d",&nodeData); printf("输入插入的位置"); scanf("%d",&place); InsertNode01(head,nodeData,place); DispLink(head); //InsertNode(head,nodeData); //DeleteMemory(head);//释放分配内存 return 0; } ```

链表一遇到OutPut函数程序就停止运行

初学《数据结构与算法》链表,不知道代码哪里有问题,代码编译和运行都没有问题,但是一遇到OutPut函数程序就停止运行了,选取了一部分代码,求大神解决。 ``` #include<stdio.h> #include<stdlib.h> typedef int ElemType; typedef int Status; typedef struct lnode { ElemType data; struct lnode*next; }LNode; void CreateList(LNode*L,int n) { int i; LNode*p; L=malloc(sizeof(LNode)); L->next=NULL; printf("请连续输入%d个元素:",n); for(i=n;i>0;i--) { p=malloc(sizeof(LNode)); scanf("%d",&p->data); p->next=L->next; L->next=p; } }//逆位序建表 void OutPut(LNode*L) { LNode *p=L->next; if(L->next==NULL) printf("该链表为空!"); else { while(p) { printf("%d\t",p->data); p=p->next; } } } void main() { LNode la; int length; printf("请输入链表la长度:"); scanf("%d",&length); CreateList(&la,length); printf("该链表的元素有:"); OutPut(&la); } ``` ![图片说明](https://img-ask.csdn.net/upload/202005/12/1589296144_91935.png)

C语言文件保存和再用问题

自己创建了2个链表,节点中的数据由用户输入,我该怎么保存这些输入的数据,令下一次再运行1这个程序时这些链表可以直接使用啊

在学习线性链表类型定义的时候,发现只有结构体的定义,没有里面的内容。同时发现在C#中的命名空间中函数也是只有声明没有内容,不知道系统如何实现操作?

如下面代码片段实现结果: ~~~ //带头结点的线性链表类型定义: typedef struct LNode { ElemType date; struct LNode *next; }*Link,*Position; typedef struct{ Link head,tail; int len; }LinkList; //下面就是实现方法,但是没有实现步骤。 Status MakeNode(Link &p,ElemType e); void FreeNode(Link &p); Status InitLIst(LinkList &L); //还有部分实现方法就不一一例举了 ~~~ 然后再查看C#中的Console的内部函数时候,发现也是这样: ~~~ public static bool IsInputRedirected { get; } public static int BufferHeight { get; set; } public static int BufferWidth { get; set; } public static bool CapsLock { get; } //以上例举的是构造函数,而实现其他方法的函数与这个结构类似,只有函数定义和内部参数,没有实现函数的过程。 ~~~ 此处列举了4个构造函数,这些函数都是只有定义没有内容,没有实现方法,不知道他们是如何让计算机执行操作的,例如:Console.WriteLine("Hello,World!")这样最简单的程序。计算机是如何调用WriteLine()函数的?没有实现方法,如何输出里面的字符?

C语言程序 学生成绩排序系统

1. 学生成绩排序系统简介 学生成绩排序系统可实现学生信息输入、学生信息输出、学生信息查询、学生成绩排序等功能。程序要求提供简单友好易于操作的界面。程序以C语言开发。 2.学生成绩管理系统基本要求: 假设有5名学生的成绩放在1个数组中。系统要求从键盘上输入的方法生成学生的成绩几有关数据。系统能按照要求根据不同条件对学生成绩进行管理。 3. 系统模块及操作要求: (1) 编写一个成绩生成函数。使用从键盘上输入的方法生成学生的各门课程的成绩(每门课程的成绩都是0-100之间的整数)并存入文件中,通过调用该函数生成全部学生的成绩再从文件中读出数据。 (2)先采用冒泡排序法,将学生成绩从高到低进行排序,再输入一个学生的成绩,将此成绩按照排 序规律插入已排好序的学生成绩数组。 (3)在函数中进行 全班学生成绩从高到低的顺序进行排名, 排名方式根据上方一排好的顺序。 (4)对学生的成绩进行优化。 若遇到成绩相同的同学,按照学号的大小进行重新排序。 (5)定义一个结构体数组,存放学生的学号,姓名,三 门课的成绩,输出单门课成绩最高的学生的学号、姓名,输出三门课程的平均分数以及最高的学生的学号、姓名及其平均分,再将学生按照平均分数从高到低进行排序并输出最后的结果。 (6)学生成绩文件管理。将学生的相关数据,存入文件中,再从文件中读出 按照平均分数从高到低进行排序,将结果输出到屏幕上,再从文件中读取学生的数据进行显示。 设计一个菜单,至少具有上述操作要求的基本功能,菜单设计请见图1。![图片说明](https://img-ask.csdn.net/upload/201605/31/1464710124_909761.png)

单链表前面的函数如何通过最后的case语句实现调用

#include <stdlib.h> #include <stdio.h> #include <conio.h> #include<iostream.h> #define OK 1 #define ERROR 0 typedef int Status; typedef char ElemType; typedef struct LNode { ElemType data; struct LNode *next; }LNode,*LinkList; //单链表的初始化 Status InitList(LinkList &L) { L=new LNode; L->next=NULL; return OK; } //单链表的建立 void CreateList_R(LinkList &L,int n) { LinkList p; L=new LNode; L->next=NULL; LinkList q=L; int i; for(i=0;i<n;++i) { p=new LNode; cin>>p->data; p->next=NULL; q->next=p; q=p; } } //单链表的取值 Status GetElem(LinkList L,int i,ElemType &e) { LinkList p=L->next; int j=1; while(p&&j<i) { p=p->next; ++j; } if(!p||j>i)return ERROR; e=p->data; return OK; } //单链表的按值查找 LNode *LocateElem(LinkList L,ElemType e) { LinkList p=L->next; while (p && p->data!=e) p=p->next; return p; } //单链表的按位置删除 Status ListDelete(LinkList &L,int i) { LinkList p=L; int j=0; while((p->next) && (j<i-1)) {p=p->next;++j;} if(!(p->next)||(j>i-1)) return ERROR; LinkList q=p->next; p->next=q->next; delete q; return OK; } //单链表的遍历 Status PrintLink(LinkList L) { LinkList P = L->next; while (P != NULL) { printf("%d ",P->data); P = P->next; } printf("\n"); return OK; } //单链表的表长 int Length(LinkList L) { LinkList p=L->next;int i=0; while (p) { i++; p=p->next; } return i; } //单链表的销毁 void DestroyList(LinkList &L) { LinkList p; LinkList q; p=L; q=p->next; while(p!=NULL) { free(p); p=q; q=p->next; } } void main(int argc, char* argv[]) { LinkList MyList; ElemType x; int pos,y; int c; int n1; while(true) { printf("------单链表的基本操作------------\n"); printf("------1.单链表的初始化------------\n"); printf("------2.线性表的建立---------------\n"); printf("------3.线性表的遍历---------------\n"); printf("------4.线性表的按位置插入---------\n"); printf("------5.线性表的表长---------------\n"); printf("------6.线性表按位置删除------------\n"); printf("------7.按位置查询线性表的元素------\n"); printf("------8.退出------------------------\n"); printf("请输入要操作的步骤:\n"); scanf("%d",&c); switch(c){ case 1: if(InitList(MyList)==OK) { printf("线性表初始化成功!\n"); } else printf("线性表初始化失败!\n"); break; case 2: CreateList_R(MyList) break; case 3: Printout(MyList); break; case 4: printf("请输入你要插入的数据:"); scanf("%d",&x); printf("请输入你要插入的位置:"); scanf("%d",&pos); if(ListInsert(MyList,pos,x)==OK) { printf("插入成功:\n"); printf("插入后的数据为:\n"); Printout(MyList); } else { printf("插入失败:\n"); } break; case 5: n1=ListLength(MyList); printf("线性表的长度%d\n",n1); break; case 6: printf("请输入你要删除元素的位置:"); scanf("%d",&y); if(ListDelete(MyList,y)==OK) { printf("\n线性表删除成功\n"); printf("线性表删除后的数据:\n"); Printout(MyList); } else printf("删除失败:\n"); break; case 7: printf("你选择数据的位置是:"); scanf("%d",&n1); if(GetElem(MyList,n1,x)==ERROR) printf("i值不合法/n"); else printf("第%d个元素的值为%d\n",n1,x); break; case 8: exit(OK); default: printf("输入错误!"); } } }

c语言,参数传入错误,是个什么情况?

我定义了一个函数,double abc(double a), 调用 double s=35.622 abc(s) 在函数abc中,s却变成了2.006 这是什么情况??

软件测试入门、SQL、性能测试、测试管理工具

软件测试2小时入门,让您快速了解软件测试基本知识,有系统的了解; SQL一小时,让您快速理解和掌握SQL基本语法 jmeter性能测试 ,让您快速了解主流来源性能测试工具jmeter 测试管理工具-禅道,让您快速学会禅道的使用,学会测试项目、用例、缺陷的管理、

计算机组成原理实验教程

西北工业大学计算机组成原理实验课唐都仪器实验帮助,同实验指导书。分为运算器,存储器,控制器,模型计算机,输入输出系统5个章节

Java 最常见的 200+ 面试题:面试必备

这份面试清单是从我 2015 年做了 TeamLeader 之后开始收集的,一方面是给公司招聘用,另一方面是想用它来挖掘在 Java 技术栈中,还有那些知识点是我不知道的,我想找到这些技术盲点,然后修复它,以此来提高自己的技术水平。虽然我是从 2009 年就开始参加编程工作了,但我依旧觉得自己现在要学的东西很多,并且学习这些知识,让我很有成就感和满足感,那所以何乐而不为呢? 说回面试的事,这份面试...

winfrom中嵌套html,跟html的交互

winfrom中嵌套html,跟html的交互,源码就在里面一看就懂,很简单

玩转Python-Python3基础入门

总课时80+,提供源码和相关资料 本课程从Python零基础到纯Python项目实战。内容详细,案例丰富,覆盖了Python知识的方方面面,学完后不仅对Python知识有个系统化的了解,让你从Python小白变编程大牛! 课程包含: 1.python安装 2.变量、数据类型和运算符 3.选择结构 4.循环结构 5.函数和模块 6.文件读写 7.了解面向对象 8.异常处理

程序员的兼职技能课

获取讲师答疑方式: 在付费视频第一节(触摸命令_ALL)片头有二维码及加群流程介绍 限时福利 原价99元,今日仅需39元!购课添加小助手(微信号:itxy41)按提示还可领取价值800元的编程大礼包! 讲师介绍: 苏奕嘉&nbsp;前阿里UC项目工程师 脚本开发平台官方认证满级(六级)开发者。 我将如何教会你通过【定制脚本】赚到你人生的第一桶金? 零基础程序定制脚本开发课程,是完全针对零脚本开发经验的小白而设计,课程内容共分为3大阶段: ①前期将带你掌握Q开发语言和界面交互开发能力; ②中期通过实战来制作有具体需求的定制脚本; ③后期将解锁脚本的更高阶玩法,打通任督二脉; ④应用定制脚本合法赚取额外收入的完整经验分享,带你通过程序定制脚本开发这项副业,赚取到你的第一桶金!

HoloLens2开发入门教程

本课程为HoloLens2开发入门教程,讲解部署开发环境,安装VS2019,Unity版本,Windows SDK,创建Unity项目,讲解如何使用MRTK,编辑器模拟手势交互,打包VS工程并编译部署应用到HoloLens上等。

基于VHDL的16位ALU简易设计

基于VHDL的16位ALU简易设计,可完成基本的加减、带进位加减、或、与等运算。

MFC一站式终极全套课程包

该套餐共包含从C小白到C++到MFC的全部课程,整套学下来绝对成为一名C++大牛!!!

利用Verilog实现数字秒表(基本逻辑设计分频器练习)

设置复位开关。当按下复位开关时,秒表清零并做好计时准备。在任何情况下只要按下复位开关,秒表都要无条件地进行复位操作,即使是在计时过程中也要无条件地进行清零操作。 设置启/停开关。当按下启/停开关后,将

董付国老师Python全栈学习优惠套餐

购买套餐的朋友可以关注微信公众号“Python小屋”,上传付款截图,然后领取董老师任意图书1本。

Python可以这样学(第一季:Python内功修炼)

董付国系列教材《Python程序设计基础》、《Python程序设计(第2版)》、《Python可以这样学》配套视频,讲解Python 3.5.x和3.6.x语法、内置对象用法、选择与循环以及函数设计与使用、lambda表达式用法、字符串与正则表达式应用、面向对象编程、文本文件与二进制文件操作、目录操作与系统运维、异常处理结构。

计算机操作系统 第三版.pdf

计算机操作系统 第三版 本书全面介绍了计算机系统中的一个重要软件——操作系统(OS),本书是第三版,对2001年出版的修订版的各章内容均作了较多的修改,基本上能反映当前操作系统发展的现状,但章节名称基

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

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

Vue.js 2.0之全家桶系列视频课程

基于新的Vue.js 2.3版本, 目前新全的Vue.js教学视频,让你少走弯路,直达技术前沿! 1. 包含Vue.js全家桶(vue.js、vue-router、axios、vuex、vue-cli、webpack、ElementUI等) 2. 采用笔记+代码案例的形式讲解,通俗易懂

微信公众平台开发入门

本套课程的设计完全是为初学者量身打造,课程内容由浅入深,课程讲解通俗易懂,代码实现简洁清晰。通过本课程的学习,学员能够入门微信公众平台开发,能够胜任企业级的订阅号、服务号、企业号的应用开发工作。 通过本课程的学习,学员能够对微信公众平台有一个清晰的、系统性的认识。例如,公众号是什么,它有什么特点,它能做什么,怎么开发公众号。 其次,通过本课程的学习,学员能够掌握微信公众平台开发的方法、技术和应用实现。例如,开发者文档怎么看,开发环境怎么搭建,基本的消息交互如何实现,常用的方法技巧有哪些,真实应用怎么开发。

150讲轻松搞定Python网络爬虫

【为什么学爬虫?】 &nbsp; &nbsp; &nbsp; &nbsp;1、爬虫入手容易,但是深入较难,如何写出高效率的爬虫,如何写出灵活性高可扩展的爬虫都是一项技术活。另外在爬虫过程中,经常容易遇到被反爬虫,比如字体反爬、IP识别、验证码等,如何层层攻克难点拿到想要的数据,这门课程,你都能学到! &nbsp; &nbsp; &nbsp; &nbsp;2、如果是作为一个其他行业的开发者,比如app开发,web开发,学习爬虫能让你加强对技术的认知,能够开发出更加安全的软件和网站 【课程设计】 一个完整的爬虫程序,无论大小,总体来说可以分成三个步骤,分别是: 网络请求:模拟浏览器的行为从网上抓取数据。 数据解析:将请求下来的数据进行过滤,提取我们想要的数据。 数据存储:将提取到的数据存储到硬盘或者内存中。比如用mysql数据库或者redis等。 那么本课程也是按照这几个步骤循序渐进的进行讲解,带领学生完整的掌握每个步骤的技术。另外,因为爬虫的多样性,在爬取的过程中可能会发生被反爬、效率低下等。因此我们又增加了两个章节用来提高爬虫程序的灵活性,分别是: 爬虫进阶:包括IP代理,多线程爬虫,图形验证码识别、JS加密解密、动态网页爬虫、字体反爬识别等。 Scrapy和分布式爬虫:Scrapy框架、Scrapy-redis组件、分布式爬虫等。 通过爬虫进阶的知识点我们能应付大量的反爬网站,而Scrapy框架作为一个专业的爬虫框架,使用他可以快速提高我们编写爬虫程序的效率和速度。另外如果一台机器不能满足你的需求,我们可以用分布式爬虫让多台机器帮助你快速爬取数据。 &nbsp; 从基础爬虫到商业化应用爬虫,本套课程满足您的所有需求! 【课程服务】 专属付费社群+每周三讨论会+1v1答疑

SEIR课程设计源码与相关城市数据.rar

SEIR结合学报与之前博客结合所做的一些改进,选择其中三个城市进行拟合仿真SEIR结合学报与之前博客结合所做的一些改进,选择其中三个城市进行拟合仿真SEIR结合学报与之前博客结合所做的一些改进,选择其

Python数据挖掘简易入门

&nbsp; &nbsp; &nbsp; &nbsp; 本课程为Python数据挖掘方向的入门课程,课程主要以真实数据为基础,详细介绍数据挖掘入门的流程和使用Python实现pandas与numpy在数据挖掘方向的运用,并深入学习如何运用scikit-learn调用常用的数据挖掘算法解决数据挖掘问题,为进一步深入学习数据挖掘打下扎实的基础。

2019 AI开发者大会

2019 AI开发者大会(AI ProCon 2019)是由中国IT社区CSDN主办的AI技术与产业年度盛会。多年经验淬炼,如今蓄势待发:2019年9月6-7日,大会将有近百位中美顶尖AI专家、知名企业代表以及千余名AI开发者齐聚北京,进行技术解读和产业论证。我们不空谈口号,只谈技术,诚挚邀请AI业内人士一起共铸人工智能新篇章!

Java面试题大全(2020版)

发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~ 本套Java面试题大全,全的不能再全,哈哈~ 一、Java 基础 1. JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境。 JRE:Java Runtime Environ...

定量遥感中文版 梁顺林著 范闻捷译

这是梁顺林的定量遥感的中文版,由范闻捷等翻译的,是电子版PDF,解决了大家看英文费时费事的问题,希望大家下载看看,一定会有帮助的

GIS程序设计教程 基于ArcGIS Engine的C#开发实例

张丰,杜震洪,刘仁义编著.GIS程序设计教程 基于ArcGIS Engine的C#开发实例.浙江大学出版社,2012.05

人工智能-计算机视觉实战之路(必备算法+深度学习+项目实战)

系列课程主要分为3大阶段:(1)首先掌握计算机视觉必备算法原理,结合Opencv进行学习与练手,通过实际视项目进行案例应用展示。(2)进军当下最火的深度学习进行视觉任务实战,掌握深度学习中必备算法原理与网络模型架构。(3)结合经典深度学习框架与实战项目进行实战,基于真实数据集展开业务分析与建模实战。整体风格通俗易懂,项目驱动学习与就业面试。 建议同学们按照下列顺序来进行学习:1.Python入门视频课程 2.Opencv计算机视觉实战(Python版) 3.深度学习框架-PyTorch实战/人工智能框架实战精讲:Keras项目 4.Python-深度学习-物体检测实战 5.后续实战课程按照自己喜好选择就可以

三个项目玩转深度学习(附1G源码)

从事大数据与人工智能开发与实践约十年,钱老师亲自见证了大数据行业的发展与人工智能的从冷到热。事实证明,计算机技术的发展,算力突破,海量数据,机器人技术等,开启了第四次工业革命的序章。深度学习图像分类一直是人工智能的经典任务,是智慧零售、安防、无人驾驶等机器视觉应用领域的核心技术之一,掌握图像分类技术是机器视觉学习的重中之重。针对现有线上学习的特点与实际需求,我们开发了人工智能案例实战系列课程。打造:以项目案例实践为驱动的课程学习方式,覆盖了智能零售,智慧交通等常见领域,通过基础学习、项目案例实践、社群答疑,三维立体的方式,打造最好的学习效果。

微信小程序开发实战之番茄时钟开发

微信小程序番茄时钟视频教程,本课程将带着各位学员开发一个小程序初级实战类项目,针对只看过官方文档而又无从下手的开发者来说,可以作为一个较好的练手项目,对于有小程序开发经验的开发者而言,可以更好加深对小程序各类组件和API 的理解,为更深层次高难度的项目做铺垫。

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

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

去除异常值matlab程序

数据预处理中去除异常值的程序,matlab写成

用verilog HDL语言编写的秒表

在秒表设计中,分模块书写。用在七段数码管上显示。输入频率是1KHZ.可以显示百分秒,秒,分。如要显示小时,只需修改leds里的代码和主模块代码。改程序以通过硬件电路验证。完全正确。

[透视java——反编译、修补和逆向工程技术]源代码

源代码。

相关热词 c# 开发接口 c# 中方法上面的限制 c# java 时间戳 c#单元测试入门 c# 数组转化成文本 c#实体类主外键关系设置 c# 子函数 局部 c#窗口位置设置 c# list 查询 c# 事件 执行顺序
立即提问
相关内容推荐