C++ free()函数的应用

#include<stdio.h>#include<malloc.h>#include"math.h"#definenull0typedefstructpnode//定义... #include<stdio.h>
#include<malloc.h>
#include"math.h"
#define null 0
typedef struct pnode//定义一个结点
{
float a;//定义系数
int b;//定义指数
struct pnode *next;
};
struct pnode *head;//定义头结点
void creatnode()//创建单链表,输入多项式各项系数
{
int i,n;
struct pnode *p;
struct pnode *t;
p=(struct pnode*)malloc(sizeof(struct pnode));//开辟一个pnode型长度的空间 并将地址给p
p->next=null;head=p;p->a=0;p->b=0;//将p指向的结点赋初值
printf("输入项数 n=");
scanf("%d",&n);//输入项数
for(i=n;i>0;--i)//逆位序向链表输入各项系数与对应指数
{
t=(struct pnode*)malloc(sizeof(struct pnode));
printf("输入第%d项 系数a=,指数b=",i);
scanf("%f,%d",&t->a,&t->b);//输入系数与对应指数
t->next=p->next;p->next=t;
}
}//creatnode
float result(float x)//计算和函数的值
{
struct pnode *temp;
double sum=0.0;
struct pnode *t;
t=head->next;
while(t)//当t不为0时执行一下循环,直至t为0时结束
{
sum=sum+(t->a)*pow(x,t->b);//计算各项之和
t=t->next;//移动指针,指向下一个结点
}
return(sum);//返回计算结果
}//result
void main()
{
float result(float x);
float c,d;
creatnode();//执行creatnode()函数
printf("输入未知数 x=");
scanf("%f",&c);//输入x的值
d=result(c);//返回计算结果给d
printf("answer is %f\n",d);
}//main
怎么清空开辟的链表?程序没有错
展开
 我来答
帐号已注销
推荐于2016-10-19 · TA获得超过2.3万个赞
知道小有建树答主
回答量:915
采纳率:96%
帮助的人:212万
展开全部
free()为C语言函数。
头文件:malloc.h或stdlib.h
作用:释放malloc(或calloc、realloc)函数给指针变量分配的内存空间的函数。
使用后该指针变量一定要重新指向NULL,防止野指针出现,有效 规避误操作。
用 法: void free(void *ptr);

程序例:
#include <string.h>
#include <stdio.h>
#include <alloc.h> //or #include <malloc.h>
int main(void)
{
char *str;
/* allocate memory for string */
str = (char *)malloc(10);
/* copy "Hello" to string */
strcpy(str, "Hello");
/* display string */
printf("String is %s\n", str);
/* free memory */
free(str);
return 0;
}
百度网友e18ce7434
2010-05-03
知道答主
回答量:10
采纳率:0%
帮助的人:0
展开全部
#include<stdio.h> #包括<stdio.h>
#include<malloc.h> #包括<malloc.h>
#include"math.h" #包括“math.h”
#define null 0 0#定义空
typedef struct pnode//定义一个结点 typedef结构pnode / /定义一个结点
{ (
float a;//定义系数浮动1 / /定义系数
int b;//定义指数诠释B组; / /定义指数
struct pnode *next;结构pnode *未来;
}; );
struct pnode *head;//定义头结点结构pnode *头; / /定义头结点
void creatnode()//创建单链表,输入多项式各项系数无效creatnode()/ /创建单链表,输入多项式各项系数
{ (
int i,n;诠释我,氮;
struct pnode *p;结构pnode *磷;
struct pnode *t;结构pnode *吨;
p=(struct pnode*)malloc(sizeof(struct pnode));//开辟一个pnode型长度的空间 并将地址给p P值(结构pnode *)malloc的(大小(结构pnode ));//开辟一个pnode型长度的空间并将地址给p
p->next=null;head=p;p->a=0;p->b=0;//将p指向的结点赋初值的p ->“下一步=无效;头= 06;的p -> 1 = 0;的p -> b = 0时,/ /将p指向的结点赋初值
printf("输入项数 n=");输出(“输入项数例”);
scanf("%d",&n);//输入项数 scanf函数(“%d个”,&n)的; / /输入项数
for(i=n;i>0;--i)//逆位序向链表输入各项系数与对应指数对(我= n的,我> 0; - 我)/ /逆位序向链表输入各项系数与对应指数
{ (
t=(struct pnode*)malloc(sizeof(struct pnode));吨=(结构pnode *)malloc的(大小(结构pnode));
printf("输入第%d项 系数a=,指数b=",i);输出(“输入第%d个项系数1 =,指数b =”,i)条;
scanf("%f,%d",&t->a,&t->b);//输入系数与对应指数 scanf函数(“%男,%d个”,&T型> 1,&T型>二)/ /输入系数与对应指数
t->next=p->next;p->next=t;的T ->“下一步=的P ->”下一步;的p ->“下一步=吨;
} )
}//creatnode )/ / creatnode
float result(float x)//计算和函数的值浮动结果(浮动十)/ /计算和函数的值
{ (
struct pnode *temp;结构pnode *气温;
double sum=0.0;双总和= 0.0;
struct pnode *t;结构pnode *吨;
t=head->next;吨=头>“下一步;
while(t)//当t不为0时执行一下循环,直至t为0时结束而(吨)/ /当不为0吨时执行一下循环,直至吨为0时结束
{ (
sum=sum+(t->a)*pow(x,t->b);//计算各项之和总和=总和+(T型> 1)*战俘(十,T型>二); / /计算各项之和
t=t->next;//移动指针,指向下一个结点吨=吨->“下一步; / /移动指针,指向下一个结点
} )
return(sum);//返回计算结果收益率(金额)/ /返回计算结果
}//result )/ /结果
void main()无效的主要()
{ (
float result(float x);结果浮动(浮动x)的;
float c,d;浮动的C,D;
creatnode();//执行creatnode()函数 creatnode ();//执行creatnode()函数
printf("输入未知数 x=");输出(“输入未知数x =”);
scanf("%f",&c);//输入x的值 scanf函数(“%f”中,&c)项; / /输入x的值
d=result(c);//返回计算结果给d Ð =结果(三)/ /返回计算结果给Ð
printf("answer is %f\n",d);输出(“答案是%女\ N”的,四);
}//main )/ /主
怎么清空开辟的链表?程序没有错怎么清空开辟的链表?程序没有错
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
闫寨的闫卫华
2015-10-06 · TA获得超过482个赞
知道小有建树答主
回答量:1887
采纳率:12%
帮助的人:202万
展开全部
#include<stdio.h>
#include<malloc.h>
#include"math.h"
#define null 0
typedef struct pnode//定义一个结点
{
float a;//定义系数
int b;//定义指数
struct pnode *next;
};
struct pnode *head;//定义头结点
void creatnode()//创建单链表,输入多项式各项系数
{
int i,n;
struct pnode *p;
struct pnode *t;
p=(struct pnode*)malloc(sizeof(struct pnode));//开辟一个pnode型长度的空间 并将地址给p
p->next=null;head=p;p->a=0;p->b=0;//将p指向的结点赋初值
printf("输入项数 n=");
scanf("%d",&n);//输入项数
for(i=n;i>0;--i)//逆位序向链表输入各项系数与对应指数
{
t=(struct pnode*)malloc(sizeof(struct pnode));
printf("输入第%d项 系数a=,指数b=",i);
scanf("%f,%d",&t->a,&t->b);//输入系数与对应指数
t->next=p->next;p->next=t;
}
}//creatnode
float result(float x)//计算和函数的值
{
struct pnode *temp;
double sum=0.0;
struct pnode *t;
t=head->next;
while(t)//当t不为0时执行一下循环,直至t为0时结束
{
sum=sum+(t->a)*pow(x,t->b);//计算各项之和
t=t->next;//移动指针,指向下一个结点
}
return(sum);//返回计算结果
}//result
void main()
{
float result(float x);
float c,d;
creatnode();//执行creatnode()函数
printf("输入未知数 x=");
scanf("%f",&c);//输入x的值
d=result(c);//返回计算结果给d
printf("answer is %f\n",d);
}//main

如果要清空开辟的链表,添加这样一个模块:
void destory(struct pnode **head)
{
struct pnode *p,*q;
p=*head;
while(p!=NULL)
{
q=p;
p=p->next;
free(q);
}
*head=NULL;
}
这样应该就行了,在主函数结束前加上destory(&head);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ankchl
推荐于2017-12-15 · TA获得超过405个赞
知道小有建树答主
回答量:116
采纳率:0%
帮助的人:0
展开全部
添加这样一个模块:
void destory(struct pnode **head)
{
struct pnode *p,*q;
p=*head;
while(p!=NULL)
{
q=p;
p=p->next;
free(q);
}
*head=NULL;
}
这样应该就行了,在主函数结束前加上destory(&head);
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2010-04-18
展开全部
这个程序的删除链表函数如下:

void dellist(void)
{
struct pnode *a=head,*b=NULL;

while (a)
{
b=a->next;
free(a);
a=b;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式