| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1267 人关注过本帖
标题:想了二天终于想把动态单向动态链表的门路摸到了,下面一自己写的一串代码, ...
只看楼主 加入收藏
zqszqs10
Rank: 1
等 级:新手上路
帖 子:14
专家分:3
注 册:2016-10-27
结帖率:50%
收藏
 问题点数:0 回复次数:3 
想了二天终于想把动态单向动态链表的门路摸到了,下面一自己写的一串代码,请高手指点下有哪些地方不足,需要改进的地方,谢谢!
#include<stdio.h>
#include<stdlib.h>
struct student
{
    int num;
    float score;
    struct student *pnext;
};
int main()
{
    struct student *create(void);
    struct student *temp;
    temp=create();
    while(temp!=NULL)
    {
        printf("%d %f\n",temp->num,temp->score);
        temp=temp->pnext;
    }
    return 0;
}
struct student *create(void)
{
    struct student *head,*p1,*p2;
    p2=p1=(struct student*)malloc(sizeof(struct student));
    scanf("%d %f",&p1->num,&p1->score);
    if(p1->num==0)
    {
        head=NULL;
        return (head);
    }
    head=p1;
    while(p1->num!=0)
    {   
        p1=(struct student*)malloc(sizeof(struct student));
        scanf("%d %f",&p1->num,&p1->score);
        p2->pnext=p1;
        if(p1->num==0)
        {
            p2->pnext=NULL;
            free(p1);
            return head;
        }
        p2=p1;
    }
    return 0;
}
搜索更多相关主题的帖子: include return create 动态 
2016-11-27 21:49
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
这个~不足方面就没有多大问题,不过改进还是可以的~看看我写的如何~

#include<stdio.h>
#include<stdlib.h>
#define Cre (Node*)malloc(sizeof(struct Node))

typedef struct Node
{
    int num;
    float score;
    struct Node *next;
}Node;
static Node *head=NULL;

static void creat()
{
    Node *p=Cre;

    scanf("%d%f",&p->num,&p->score);

    if (p->num==0)
        return;

    head=p;

    while (1)
    {
        p->next=Cre;
        scanf("%d%f",&p->next->num,&p->next->score);
        if (p->next->num==0)
            break;
        p=p->next;
    }

    free(p->next);
    p->next=NULL;
}
static void print()
{
    Node *p=head;
    while (p)
    {
        printf("%d %.2f\n",p->num,p->score);
        p=p->next;
    }
}
int main()
{
    creat();
    print();
    return 0;
}

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-11-27 22:50
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:0 
回复 楼主 zqszqs10
头指针没有声明为公有,你确定这样做没问题吗?
2016-11-27 22:51
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 3楼 yangfrancis
入门教科书上也是类似于题主这种结构的,头指针没有声明为公有是可以的,但引用头指针时会比较麻烦。我猜教科书的大意是想让我们熟悉结构体类型函数的返回值吧。
struct *型的函数其实用起来不太方便,每次只能带回一个返回值,是给新手熟悉用的~应该是这样吧~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-11-27 23:24
快速回复:想了二天终于想把动态单向动态链表的门路摸到了,下面一自己写的一串代 ...
数据加载中...
 
   



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

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