| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 975 人关注过本帖
标题:这个链表删除程序哪里错了,一直显示没有该数据
只看楼主 加入收藏
i多子妹师南
Rank: 1
来 自:江苏
等 级:新手上路
帖 子:12
专家分:4
注 册:2016-11-13
结帖率:85.71%
收藏
已结贴  问题点数:10 回复次数:4 
这个链表删除程序哪里错了,一直显示没有该数据
程序代码:
#include<stdio.h>
#include<malloc.h>
typedef char data;/*方便修改链表的数据类型*/
/*链表的类型:链表的类型是链表一个单元的类型*/
typedef struct link
{
    data i;/*链表数据类型是data,即cahr*/
    struct link *p;/*定义一个结构体类型的指针,因为链表指针域中存放的指针地址
                   存放的内容是一个结构体*/
}linklist;/*linklist不是变量名,而是类型名*/
void creatlink(linklist *head)
{
    data m;
    int t=1;
    linklist *h,*temp;
    temp=head;
    do{
        printf("请输入第%d结点的数据:\n",t);
          h=(linklist *)malloc(sizeof(linklist));
        temp->p=h;
        fflush(stdin);
        scanf("%c",&m);
        h->i=m;
        t++;
        temp=h;
    }while(m!='a');
    temp->p=NULL;

    printf("您已输入完毕\n");
}
void display(linklist *head)
{
    linklist *temp;
    int t=1;
    temp=head;
    if(temp->p==NULL)
        printf("该链表是空表\n");
    while(temp->p!=NULL)
    {
        printf("第%d个结点数据是%c\n",t,temp->p->i);
        temp->p=temp->p->p;
        t++;
    }
    printf("链表已显示完毕\n");
}
void dellink(linklist *head,data d)
{
    linklist *temp1,*temp2;

   
        temp1=head->p;
        temp2=head;
   
    while(temp1!=NULL)
    {
        if(temp1->i==d)
        {
            temp2->p=temp1->p;
            break;
        }
           
        else
        {
            temp2=temp1;
            temp1=temp1->p;
        }/*temp->p=temp->p->p这样做是不是仍然改变了链表,要想不改变是不是应该改变temp的值,使它不再指向
                               head*/
    }
   
    if(temp1==NULL)
        printf("你逗我!请输入正确的数据好吗!!!\n");
    else
        printf("已删除该数据\n");
}
int main()
{
    data w;
    linklist *head;
    head=(linklist *)malloc(sizeof(linklist));
    creatlink(head);
    printf("\n");
    display(head);
    printf("\n");
    printf("请你输入要删除的数据:\n");
    fflush(stdin);
    w=getchar();
    dellink(head,w);
    return 0;
}

   
图片附件: 游客没有浏览图片的权限,请 登录注册
2016-11-13 23:17
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:10 
display 函数中
temp->p = temp->p->p;

你确定知道你在做什么?


[fly]存在即是合理[/fly]
2016-11-14 09:25
i多子妹师南
Rank: 1
来 自:江苏
等 级:新手上路
帖 子:12
专家分:4
注 册:2016-11-13
收藏
得分:0 
回复 2楼 azzbcc
不是的,那个注释是我之前写的错误程序,我在旁边写了我错误的情况,程序已经改了,你看看程序部分,为什么错的,前面是自己写的三个链表操作函数,创建函数和显示函数都是对的,就那个删除链表某一元素的函数有问题,程序可以运行,没有错误,帮忙修改
2016-11-14 09:56
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
我是说 display


[fly]存在即是合理[/fly]
2016-11-14 09:59
i多子妹师南
Rank: 1
来 自:江苏
等 级:新手上路
帖 子:12
专家分:4
注 册:2016-11-13
收藏
得分:0 
回复 4楼 azzbcc
不好意思,我刚以为你说的我的注释部分,谢谢你,问题解决了,我一直以为我的删除程序错误,其实调用了display函数后,链表头指针就为空了,链表就丢失了,删除程序也就无法执行了。谢谢
2016-11-14 10:03
快速回复:这个链表删除程序哪里错了,一直显示没有该数据
数据加载中...
 
   



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

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