幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2253|回复: 6

[通用编程] 还是请教一下链表

[复制链接]

313

主题

1574

帖子

1万

积分

⑧专业

*永恒国度*

积分
14145
QQ
发表于 2007-7-1 21:30:33 | 显示全部楼层 |阅读模式
程序如下:  (请问这样写算是双链吗?只列出部分) head的置空在main里进行

struct dlist
{
    int num;
    float score;
    struct dlist *left,*right;
}*head;
void new_record()                                   // 输入新数据
{
    struct dlist *p1,*newer;
    newer=(struct dlist *)malloc(sizeof(struct dlist));
    p1=head;
    if(head==NULL)
        head=newer;
    else
    {
        p1=head;
        while(p1->right!=NULL)
        {
            p1=p1->right;
        }
        p1->right=newer;
        

    }
    p1=newer;
    printf("请输入学号:");
        scanf("%d",&p1->num);
        printf("请输入成绩:");
        scanf("%f",&p1->score);
        p1->right=NULL;
}
void insert()                                 // 根据条件插入数据
{
    struct dlist *p1,*p2,*p3;
    p1=head;
    p2=(struct dlist *)malloc(sizeof(struct dlist));
    p2->left=p2->right=NULL;
        printf("请输入学号:");
        scanf("%d",&p2->num);
        printf("请输入成绩:");
        scanf("%f",&p2->score);
        if(head==NULL)
            head=p2;
        else
        {
            while(p2->num>p1->num&&p1->right!=NULL)
            {
                p3=p1;
                p1=p1->right;
            }
            if(p2->num<p1->num)
            {
                if(p1==head)
                {
                    head=p2;
                    p2->right=p1;
                    p1->left=p2;
                }
                else
                {
                    p2->right=p3->right;
                    p3->right->left=p2;
                    p2->left=p3;
                    p3->right=p2;
                }

            }
            else
            {
                p1->right=p2;
                p2->left=p1;
            }
        }
}
void del()                                                    //  删除数据
{
    int a;
    struct dlist *p1,*p2,*p3;
    if(head==NULL)
        printf("信息表为空无法删除!\n");
    else
    {
        p1=head;
        printf("请输入你要删除的学号:");
        scanf("%d",&a);
        while(a!=p1->num &&p1->right!=NULL)
        {
            p3=p1;
            p1=p1->right;
        }
        if(a==p1->num)
        {
            if(p1==head)
            {
                p2=p1;
                head=p1->right;
            }
            if(p1->right!=NULL)
            {
                p2=p1;
                p3->right=p1->right;
                p1->right->left=p3;
            }
            else
            {
                p2=p1;
                p1->left=NULL;
            }
        }
        else
            printf("没找到!\n");
    }
    if(p2!=NULL)
        free(p2);
}
void display()                                   //    显示数据
{
    int i=0;
    struct dlist *p;
    if(head==NULL)
        printf("信息表为空!\n");
    else
    {
    p=head;
    do
    {
        i=0;
        printf("%d:%d的成绩为%f\n",i+1,p->num,p->score);
        i++;
        p=p->right;
    }while(p!=NULL);
    }
}
[img][/img] http://shop33698673.taobao.com被别人嫉妒,证明你优秀,嫉妒别人说明你无能
回复

使用道具 举报

7

主题

190

帖子

1766

积分

⑥精研

....

积分
1766
发表于 2007-7-6 10:23:40 | 显示全部楼层
经鉴定.是双链. [s:5]
P2,P3....OTL,能不能起个更适当的名字.P3就是一个临时存放结点,命名为pTmpNode,P2更是没有什么必要,完全可以去掉.用P1->left应该替代.
另外,Node中指针..left,right...汗.一般都是prior,next吧
不是我较汁,天下大事,必成于细.开始没有一个好的命名规范和好的编程风格习惯,对以后的影响是极大的...T.T换本书吧..
萝卜啊,白菜啊,土豆星啊,梦想有爱啊。
回复 支持 反对

使用道具 举报

313

主题

1574

帖子

1万

积分

⑧专业

*永恒国度*

积分
14145
QQ
 楼主| 发表于 2007-7-8 10:32:36 | 显示全部楼层
引用第1楼duzhi5368于2007-07-06 10:23发表的  :
经鉴定.是双链. [s:5]
P2,P3....OTL,能不能起个更适当的名字.P3就是一个临时存放结点,命名为pTmpNode,P2更是没有什么必要,完全可以去掉.用P1->left应该替代.
另外,Node中指针..left,right...汗.一般都是prior,next吧
不是我较汁,天下大事,必成于细.开始没有一个好的命名规范和好的编程风格习惯,对以后的影响是极大的...T.T换本书吧..
[img][/img] http://shop33698673.taobao.com被别人嫉妒,证明你优秀,嫉妒别人说明你无能
回复 支持 反对

使用道具 举报

313

主题

1574

帖子

1万

积分

⑧专业

*永恒国度*

积分
14145
QQ
 楼主| 发表于 2007-7-8 10:33:41 | 显示全部楼层
你说的那本书已经在网上订购了,还没到手[s:6]
[img][/img] http://shop33698673.taobao.com被别人嫉妒,证明你优秀,嫉妒别人说明你无能
回复 支持 反对

使用道具 举报

7

主题

190

帖子

1766

积分

⑥精研

....

积分
1766
发表于 2007-7-8 13:36:02 | 显示全部楼层
恩,多买点,以后找你借书去方面 [s:5]
萝卜啊,白菜啊,土豆星啊,梦想有爱啊。
回复 支持 反对

使用道具 举报

136

主题

1751

帖子

548

积分

版主

Rank: 7Rank: 7Rank: 7

积分
548
发表于 2007-7-8 17:08:41 | 显示全部楼层
够用就行了。IT类书特贵,什么都买,要花去的铁能砸死人的。

ps.
借书去“方便”?
"方便","方便","方便"啊~ [s:5]  [s:5]  [s:5]  [s:5]  [s:5]
え~え~お!!!
回复 支持 反对

使用道具 举报

7

主题

190

帖子

1766

积分

⑥精研

....

积分
1766
发表于 2007-7-8 19:53:36 | 显示全部楼层
[s:5] 我讨厌“便”“便”……
萝卜啊,白菜啊,土豆星啊,梦想有爱啊。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-5-2 12:48 , Processed in 0.023204 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表