*/ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhello * 完成日期:2016年6月25日 * 版本号:V1.0 * 问题描述:对单向链表的增加,删除,插入 * 程序输入:无 * 程序输出:见运行结果 */ #include "stdio.h" #include "stdlib.h" #include "string.h" struct STUDENT{ char name[32]; struct STUDENT *next; }; void addStudent(STUDENT *stu); void delStudent(char *name); void saveStuToFile(); STUDENT *gStu=NULL; int main() { int i; for(i=0;i<100;i++) { STUDENT *stu; stu = (STUDENT *)malloc(sizeof(STUDENT)); memset(stu->name,0,sizeof(stu->name)); sprintf(stu->name,"%s%d","zhangsan",i+1); addStudent(stu); } saveStuToFile(); STUDENT *p; p = gStu; while(p) { printf("%s ",p->name); p= p->next; } for(i=20;i<30;i++) { char name[32]; sprintf(name,"%s%d","zhangsan",i+1); delStudent(name); } p = gStu; while(p) { printf("%s ",p->name); p= p->next; } } void addStudent(STUDENT *stu) { STUDENT *p; if(gStu==NULL) { gStu =stu; stu->next=NULL; } else { p = gStu; while(p) { if(p->next==NULL) { p->next =stu; stu->next =NULL; } p= p->next; } } } void delStudent(char *name) { STUDENT *p,*pre; if (gStu==NULL) { return; } p =pre=gStu; while(p) { if (!strcmp(p->name,name)) { if(p==gStu) { gStu = gStu->next; free(p); p=NULL; } else { pre->next =p->next; free(p); p=NULL; } } else { pre =p; p= p->next; } } } void saveStuToFile() { FILE *fp; int filelen; fp = fopen("yyy.txt","w"); STUDENT *p; p = gStu; while(p) { fwrite(p->name,32,1,fp); p= p->next; } fclose(fp); }