| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 590 人关注过本帖
标题:【求助】删除链表中符合条件的所有结点!
只看楼主 加入收藏
liangjinchao
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:376
专家分:697
注 册:2010-11-8
结帖率:97.44%
收藏
已结贴  问题点数:20 回复次数:6 
【求助】删除链表中符合条件的所有结点!
程序代码:
Polynomil *Remove(Polynomil *head)
{
    int expon;
    Polynomil *pointer=head->next,*pt;
    printf("请输入你所要删除的项的指数:\n");
    scanf("%d",&expon);
    if(expon==pointer->expon)//删除第一个结点
    {
        head->next=pointer->next;
        free(pointer);
        printf("删除成功!\n");
    }
    else
    {
        while(pointer)
        {
            pt=pointer;
            pointer=pointer->next;
            if(pointer->expon==expon)
            {
                pt->next=pointer->next;
                free(pointer);
                pointer=pt;//这里是想把前驱结点赋给pointer,然后下一次循环从这个结点开始,直到表尾!但好像行不通
            }
        }
    }
    return head;
}
2011-05-30 19:11
刘定邦
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:687
专家分:1570
注 册:2010-9-21
收藏
得分:0 
唉.链表是最头痛的..
2011-05-30 19:29
liangjinchao
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:376
专家分:697
注 册:2010-11-8
收藏
得分:0 
我倒觉得挺有趣滴!

因为有了因为,所以有了所以,既然已成既然,何必再说何必
2011-05-30 19:32
木头lbj
Rank: 7Rank: 7Rank: 7
来 自:黄山
等 级:黑侠
威 望:1
帖 子:269
专家分:527
注 册:2010-11-6
收藏
得分:0 
pointer不是被释放了么?还能赋值?

。。。!!!)))000
2011-05-30 22:52
liangjinchao
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:376
专家分:697
注 册:2010-11-8
收藏
得分:0 
回复 4楼 木头lbj
兄弟请看:
程序代码:
#include"stdio.h"
#include"stdlib.h"
int main()
{
    char *p=(char *)malloc(sizeof(char)),*q=(char *)malloc(sizeof(char));
    *p='P';
    *q='Q';
    printf("p指向的值:%c   p的地址:%p\n\n",*p,p);
    free(p);
    printf("p被释放后:\n\n");
    printf("p指向的值:%c    p的地址:%p\n\n",*p,p);
    p=q;
    printf("p被赋值后:\n\n");
    printf("p指向的值:%c    p的地址:%p  q的地址:%p\n\n",*p,p,q);
    *p=*q;
    printf("p所指向的值改变后:\n\n");
    printf("p指向的值:%c   p的地址:%p\n",*p,p);
    return 0;
}

图片附件: 游客没有浏览图片的权限,请 登录注册

因为有了因为,所以有了所以,既然已成既然,何必再说何必
2011-05-31 09:02
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:20 
程序代码:
Polynomil *Remove(Polynomil *head)
{
    int expon;
    Polynomil *pointer=head->next,*pt;
    printf("请输入你所要删除的项的指数:\n");
    scanf("%d",&expon);
    if(expon==pointer->expon)//删除第一个结点
    {
        head->next=pointer->next;
        free(pointer);
        printf("删除成功!\n");
    }
    else
    {
        while(pointer)
        {
            pt=pointer;
            if(pointer->next->expon==expon)
            {
                pointer->next=pointer->next->next;
                free(pt);
                pointer=pointer->next;//这里是想把前驱结点赋给pointer,然后下一次循环从这个结点开始,直到表尾!但好像行不通
            }
        }
    }
    return head;
}
你也不给个链表  我也没法测试 这个应该差不多了  去试试吧

                                         
===========深入<----------------->浅出============
2011-05-31 09:28
liangjinchao
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:376
专家分:697
注 册:2010-11-8
收藏
得分:0 
回复 6楼 laoyang103
不行吖!我再想想~~

因为有了因为,所以有了所以,既然已成既然,何必再说何必
2011-05-31 17:54
快速回复:【求助】删除链表中符合条件的所有结点!
数据加载中...
 
   



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

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