| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1522 人关注过本帖
标题:插入结点..有问题.帮忙看一下...
只看楼主 加入收藏
chendsily
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2007-10-19
收藏
 问题点数:0 回复次数:11 
插入结点..有问题.帮忙看一下...
#include<stdio.h>
#include <stdlib.h>
struct node
{
    int num;
    struct node *next;
};
main()
{
    int i,y;
    struct node *head,*q,*p,*s;
    for(i=0;i<5;i++)
    {
        p=(struct node *)malloc(sizeof(struct node));
        scanf("%d",&p->num);
        if(i==0)
        {
            head=p;
            q=p;
            p->next=NULL;
        }
        else
        {
            q->next=p;
            q=p;
            p->next=NULL;
        }
    }
    p=head;
    while(p)
    {
        printf("%d\t",p->num);
        p=p->next;
    }
    printf("\n");
    printf("input y \n");
    
    s=(struct node *)malloc(sizeof(struct node));
    scanf("%d",&y);
    s->num=y;
    s->next=NULL;
    
    
    q=head;
    while(p!=NULL && y<p->num)
    {
        q=p;
        p=p->next;
    }
    s->next=p;
    q->next=s;
    p=head;
    
    while(p)
    {
        printf("%d\t",p->num);
        p=p->next;
    }
}
搜索更多相关主题的帖子: 结点 
2008-09-02 17:57
随心
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:12
帖 子:2577
专家分:250
注 册:2007-8-12
收藏
得分:0 
输出的时候你忘了把    归位 p=head

天之道,利而不害。圣人之道,为而不争。信言不美,美言不信。善者不辩,辩者不善。知者不博,博者不知。
2008-09-02 18:16
随心
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:12
帖 子:2577
专家分:250
注 册:2007-8-12
收藏
得分:0 
加上free!!!

[[it] 本帖最后由 随心 于 2008-9-2 18:21 编辑 [/it]]

天之道,利而不害。圣人之道,为而不争。信言不美,美言不信。善者不辩,辩者不善。知者不博,博者不知。
2008-09-02 18:17
chendsily
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2007-10-19
收藏
得分:0 
请问FREE是加在哪里??刚接触链表.不是很懂,多谢
2008-09-02 18:21
随心
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:12
帖 子:2577
专家分:250
注 册:2007-8-12
收藏
得分:0 
程序结束前你free掉就行了

天之道,利而不害。圣人之道,为而不争。信言不美,美言不信。善者不辩,辩者不善。知者不博,博者不知。
2008-09-02 18:22
chendsily
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2007-10-19
收藏
得分:0 
还是不懂..辛苦楼上了..
2008-09-02 18:37
missiyou
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:531
专家分:218
注 册:2007-10-9
收藏
得分:0 
好像是插入没用吧
呵呵。
2008-09-02 19:35
wylhyly
Rank: 1
来 自:浙江
等 级:新手上路
帖 子:6
专家分:0
注 册:2008-8-28
收藏
得分:0 
最后几句改成这样试试
p=head;
    while(p!=NULL && y<p->num)
    {
        q=p;
        p=p->next;
    }
    if(p==head) {  s->next=head; head=s; }
    else { s->next=p; q->next=s; }
    p=head;
    while(p)
    {
        printf("%d\t",p->num);
        q=p;
        p=p->next;
        free(q);
    }
}

[[it] 本帖最后由 wylhyly 于 2008-9-2 21:56 编辑 [/it]]
2008-09-02 21:46
chendsily
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2007-10-19
收藏
得分:0 
楼上的大哥..插入点总是在插在第一位...无法插到别的地方去.
2008-09-02 23:41
wylhyly
Rank: 1
来 自:浙江
等 级:新手上路
帖 子:6
专家分:0
注 册:2008-8-28
收藏
得分:0 
回LZ
我只加了一条if语句,输出什么没有改变你的设想。如果你输入7 8 9 4 5 6的话,这个6就会插到中间去,你不妨试试。
2008-09-03 00:10
快速回复:插入结点..有问题.帮忙看一下...
数据加载中...
 
   



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

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