可按Ctrl+D收藏 蚂蚁资源网
个人主页 我的介绍 我的文章 商品评论 资讯评论
  • 【点评】 网站源码破解版(开源代码网站)
  • 2021-02-12 05:02:58
  • ,
  • 【点评】 游戏源码出售(中国最大的源码交易网站)
  • 2021-02-12 05:01:50
  • 【点评】
  • 2021-02-12 04:57:18
  • 【点评】
  • 2021-02-12 04:57:03
  • 【点评】
  • 2021-02-12 04:44:24
  • 【点评】
  • 2021-02-12 04:42:50
  • 【点评】
  • 2021-02-12 04:42:28
  • ,
  • 【点评】
  • 2021-02-12 04:42:03
  • 【点评】
  • 2021-02-12 04:40:39
  • ,
  • 【点评】
  • 2021-02-12 04:37:36
  • 【点评】 malloc源码(c语言malloc用法)
  • 2021-02-12 04:32:50
  • 急!急!建立一个动态链表,用malloc函数开辟新结点,结点包含姓名、年龄、学号,然后输出的源代码,急求!,#include<stdio.h>#include<malloc.h>#include<string.h>#define NAMEMAX 50#define NOMAX 20#define DATATYPE STUDENTtypedef struct node{ void *data; struct node *left; struct node *right; }NODE;typedef struct{ struct node *head; struct node *current; struct node *rear; int count;}linklist;typedef struct{ char name[NAMEMAX]; int age; char no[NAMEMAX];}DATATYPE;void init_linklist(linklist *list){ list->head=NULL; list->current=NULL; list->rear=NULL; list->count=0;}void add_linklist(linklist *list,void *data){ NODE *newNode; newNode=(NODE *)malloc(sizeof(NODE)); newNode->data=data; if(list->head==NULL) { list->head=newNode; list->current=newNode; list->rear=newNode; newNode->left=NULL; newNode->right=NULL; list->count++; } else { list->rear->right=newNode; newNode->left=list->rear; newNode->right=NULL; list->rear=newNode; list->current=newNode; list->count++; }}void free_list(linklist *list,DATATYPE*){ NODE *tmp=list->head; while(tmp!=NULL) { if(tmp->left==NULL) { tmp=tmp->right; continue; } else if(tmp->right==NULL) { free((DATATYPE*)(tmp->data)); free(tmp); break; } else { free((DATATYPE*)(tmp->left->data)); free(tmp->left); tmp=tmp->right; } } init_linklist(list); return;}void printlist(linklist *list,DATATYPE*){ NODE *tmp=list->head; int i=0; while(tmp!=NULL) { printf("第%d条记录:\n",++i); printf("----------------------------\n"); printf("姓名为:%s\n",((DATATYPE*)(tmp->data))->name); printf("年龄为:%d\n",((DATATYPE*)(tmp->data))->age); printf("学号为:%s\n",((DATATYPE*)(tmp->data))->no); printf("----------------------------\n"); tmp=tmp->right; } return;}int main(){ DATATYPE *pStu=NULL; char buf[50]={0}; linklist list; init_linklist(&list); while(1) { pStu=(DATATYPE*)malloc(sizeof(DATATYPE)); memset(pStu,0,sizeof(DATATYPE)); printf("请输入姓名:"); fgets(pStu->name,NAMEMAX,stdin); pStu->name[strlen(pStu->name)-1]=0; printf("请输入年龄:"); scanf("%d",&(pStu->age)); getchar(); printf("请输入序号:"); fgets(pStu->no,NOMAX,stdin); pStu->no[strlen(pStu->no)-1]=0; add_linklist(&list,pStu); printf("是否继续添加(y/n):"); memset(buf,0,50); fgets(buf,50,stdin); buf[strlen(buf)-1]=0; if (!strcmp("y",buf) || !strcmp("Y",buf)) continue; else break; } printf("\n结果为:\n"); printlist(&list,0); free_list(&list,0); return 0;} //void printlist(linklist *list,DATATYPE*) 楼下的这DATATYPE后面这个类型没意思?? 告诉你这是显示强调里面要使用DATATYPE这个类型,而又不使用它 printlist(&list,0); 这句就能体现,还有个功能就是释放内存时你考虑了没 虽然这题free void*指针是可以释放的 但是如果在C++ 中你如果直接释放void*指针 而不指定其类型 那么这个对象就释放不测底 。#define DATATYPE STUDENT 我定义这个宏的目的就是能够方便的智能的释放内存。 如果你把STUDENT的这个结构体改了 不叫这个名字 那么岂不是又要在相关的代码更改名字,而我这个只要修改这个宏就行了,我写这么复杂?告诉你我这个代码基本是直接拷贝的 这代码是以前写过的,使用的通用双向链表 我只是截取了我写的一部分函数写代码的目的是要通用,要能够重复利用。
  • 【点评】
  • 2021-02-12 04:28:26
  • 【点评】 招商加盟源码(一万元加盟什么店)
  • 2021-02-12 04:25:03
  • 【点评】 有赞商城源码(有赞代码)
  • 2021-02-12 04:21:45
  • 【点评】 传奇霸业源码(传奇辅助哪个好用)
  • 2021-02-12 04:18:31
  • ,
  • 【点评】 扫码点餐源码(扫码点餐系统怎么做)
  • 2021-02-12 04:16:13
  • ,
  • 【点评】 人力资源管理系统源码(人力资源管理信息系统实例)
  • 2021-02-12 04:14:57
  • 【点评】 VScode 源码(vscode 安装)
  • 2021-02-12 03:28:59
  • VScode,用VScode写代码的时候怎么写着写着就没有代码提示了啊,智能提示是一个插件,把那个插件重新加载一下就行了!在左侧插件管理里,好象是C# Extented的那个插件就是。
  • 【点评】 漫画网站源码(动漫网页设计源代码)
  • 2021-02-12 03:19:34
  • 动漫源码,记得有个朋友在92game程序源码买过一套动漫源码,售前售后都不错!~刚才去百度找了他们的官网, http://www.92game.net/ 客服QQ:2239165394
  • 【点评】 短信轰炸机源码()
  • 2021-02-12 03:09:14
联系客服
网站客服 联系客服
手机版

扫一扫进手机版
返回顶部