| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1345 人关注过本帖
标题:给renkejun1942 烟雨晨曦 送分
只看楼主 加入收藏
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
回复 10楼 wp231957
释放内存的目的是为了那些需要长时间运行的程序,如果程序只运行一次,的确没必要释放内存。
可能你没注意,我写的好多程序都没释放内存,反正就运行一次,退出,内存就自动被系统回收了。

[此贴子已经被作者于2017-3-23 22:04编辑过]


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-03-23 22:02
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
回复 9楼 renkejun1942
程序代码:
#include <stdio.h>
#include <malloc.h>

#define N 9

typedef struct data
{
    int value;
    struct data* next;
}tdata,*pdata;


void prnlist(pdata head)
{
    pdata pfirst=head->next;
    while(pfirst!=NULL)
    {
        printf("%d  ",pfirst->value);
        pfirst=pfirst->next;
    }
    printf("\n");
}


int main(int argc, char* argv[])
{
    pdata  head1,pfirst1,psecond1;
    pfirst1=(pdata)malloc(sizeof(tdata));
    head1=pfirst1;
    head1->value=0;
    head1->next=NULL;
    psecond1=pfirst1;
    int i;
    printf("请录入第一组数据 :\n");
    for(i=0;i<N;i++)
    {
        pfirst1=(pdata)malloc(sizeof(tdata));
        scanf("%d",&pfirst1->value);
        pfirst1->next=NULL;
        psecond1->next=pfirst1;
        //psecond1=pfirst1;
    }
    printf("请录入第二组数据:\n");
    pdata pfirst2=(pdata)malloc(sizeof(tdata));
    pdata head2=pfirst2;
    head2->value=0;
    head2->next=NULL;
    pdata psecond2=pfirst2;
    for(i=0;i<N;i++)
    {
        pfirst2=(pdata)malloc(sizeof(tdata));
        scanf("%d",&pfirst2->value);
        pfirst2->next=NULL;
        psecond2->next=pfirst2;
        //psecond2=pfirst2;
    }
    printf("你所录入的两组数据如下:\n");
    prnlist(head1);
    prnlist(head2);
    printf("共有数据如下:\n");
    for(pfirst1=head1->next;pfirst1!=NULL;pfirst1=pfirst1->next)
    {
        for(pfirst2=head2->next;pfirst2!=NULL;pfirst2=pfirst2->next)
        {
            if(pfirst2->value==pfirst1->value) printf("%d  ",pfirst2->value);
        }
    }
    printf("\n");
    //free(head1);
    //free(head2);
    return 0;
}

可是这样改  就完蛋了 没链了

DO IT YOURSELF !
2017-03-23 22:06
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
回复 12楼 wp231957
我重新看了一次,是我弄错了,原来psecond1指向pfirst1,为了更新指针。

好吧,重新看了一番,很仔细的,你的代码就只有释放内存不对。



[此贴子已经被作者于2017-3-23 22:15编辑过]


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-03-23 22:13
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
回复 13楼 renkejun1942
你远比我有耐心  再次表示感谢

DO IT YOURSELF !
2017-03-23 22:19
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
回复 14楼 wp231957
多手帮你重新编辑了一下,你看看这样会不会更好一些。

将同用途的变量放在同一组神明中。

所以指针根据用途,会有三组。
一组,头指针,一组临时指针,一组遍历链表用的指针。

程序代码:
#include <stdio.h>
#include <malloc.h>

#define N 9

typedef struct data
{
    int value;
    struct data* next;
}tdata,*pdata;


void prnlist(pdata head)
{
    pdata pfirst=head->next;
    while(pfirst!=NULL)
    {
        printf("%d  ",pfirst->value);
        pfirst=pfirst->next;
    }
    printf("\n");
}


int main(int argc, char* argv[])
{
    pdata pfirst1, pfirst2;
    pdata head1, head2;
    pdata psecond1, psecond2;
    int i;

    pfirst1=(pdata)malloc(sizeof(tdata));//第一个链表哑节点
    head1=pfirst1;
    head1->value=0;
    head1->next=NULL;
    psecond1 = pfirst1;
   
    printf("请录入第一组数据 :\n");
    for(i=0;i<N;i++)
    {
        pfirst1=(pdata)malloc(sizeof(tdata));
        scanf("%d",&pfirst1->value);
        pfirst1->next=NULL;
        psecond1->next=pfirst1;
        psecond1=pfirst1;
    }


    pfirst2=(pdata)malloc(sizeof(tdata));//第二个链表哑节点
    head2=pfirst2;
    head2->value=0;
    head2->next=NULL;
    psecond2 = pfirst2;

    printf("请录入第二组数据:\n");
    for(i=0;i<N;i++)
    {
        pfirst2=(pdata)malloc(sizeof(tdata));
        scanf("%d",&pfirst2->value);
        pfirst2->next=NULL;
        psecond2->next=pfirst2;
        psecond2=pfirst2;
            
    }
    printf("你所录入的两组数据如下:\n");
    prnlist(head1);
    prnlist(head2);

    printf("共有数据如下:\n");
    for(pfirst1=head1->next;pfirst1!=NULL;pfirst1=pfirst1->next)
    {
        for(pfirst2=head2->next;pfirst2!=NULL;pfirst2=pfirst2->next)
        {
            if(pfirst2->value==pfirst1->value) printf("%d  ",pfirst2->value);
        }
    }
    printf("\n");
    return 0;
}


[此贴子已经被作者于2017-3-23 22:28编辑过]


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-03-23 22:22
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
收藏
得分:0 
回复 5楼 wp231957
老坛的书
2017-03-25 22:23
快速回复:给renkejun1942 烟雨晨曦 送分
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032437 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved