| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 411 人关注过本帖
标题:关于双向链表的问题
只看楼主 加入收藏
kknd84913
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2012-12-26
结帖率:0
收藏
 问题点数:0 回复次数:7 
关于双向链表的问题
代码:
#include <stdio.h>
#include <malloc.h>

typedef struct student
{
    char name[20];
    struct student *prior,*next;
}stud;

stud *create(int n)
{
    int i;
    stud *p,*h,*s;
    h=(stud*)malloc(sizeof(stud));
    h->name[0]='\0';
    h->prior=NULL;
    h->next=NULL;
    p=h;
    for(i=0;i<n;i++)
    {
        s=(stud*)malloc(sizeof(stud));
        p->next=s;
        printf("请输入第%d名学生的姓名:",i+1);
        scanf("%s",s->name);
        s->prior=p;
        s->next=NULL;
        p=s;
    }
    p->next=NULL;   //循环完后最后一个结点的指向下一个结点的指针置空
    return(h);      //返回开始的头指针
}

stud *find(stud *h,char *x)
{
    stud *p;
    char *y;
    p=h->next;
    while(p)
    {
        y=p->name;
        if(strcmp(y,x)==0)
            return(p);
        else
            p=p->next;
    }
    printf("您所要删除的姓名不在此名单中:\n");
    return 0;
}

void del(stud *p)
{
    p->next->prior=p->prior;
    p->prior->next=p->next;
    free(p);
}

main()
{
    int x;
    int number;
    char sname[20];
    stud *head,*sp;
    printf("\t\t练习088(练习A) 使用学生信息动态创建一个双链表\n");
    printf("\n请输入要输入信息的学生人数:\n");
    scanf("%d",&number);
    printf("\n");
    head=create(number);
    sp=head->next;
    printf("\n输入的学生姓名是:\n");
    while(sp)
    {
        printf("%s ",sp->name);
        sp=sp->next;
    }
    printf("\n\n是否要删除学生的姓名?(Y=0,N=1)");
    scanf("%d",&x);
    if(x==0)
    {
        printf("\n请输入要删除的学生的姓名:\n");
        scanf("%s",&sname);
        printf("\n");
        sp=find(head,sname);
        del(sp);
        sp=head->next;
        printf("现在的学生的名单是:\n");
        while(sp)
        {   
            printf("%s ",sp->name);
            sp=sp->next;
        }
    }
    else if(x==1)
    {
        sp=head->next;
        printf("\n现在的学生的名单是:\n");
        while(sp)
        {   
            printf("%s ",sp->name);
            sp=sp->next;
        }
    }
   
}

但是在执行删除的时候就是程序执行不下去,请问错误出在哪?

[ 本帖最后由 kknd84913 于 2013-1-28 16:09 编辑 ]
搜索更多相关主题的帖子: include create 姓名 
2013-01-28 15:40
c10121209
Rank: 1
等 级:新手上路
帖 子:18
专家分:5
注 册:2013-1-25
收藏
得分:0 
你的find 方法怎么没有返回值啊。
在del方法里加些参数校验的语句看看。
2013-01-28 16:00
kknd84913
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2012-12-26
收藏
得分:0 
回复 2楼 c10121209
有返回值啊   一个是P  一个是0 说是DEL错了 但是我 刚才有个程序用的就是这个DEL啊 能执行的啊
2013-01-28 16:11
c10121209
Rank: 1
等 级:新手上路
帖 子:18
专家分:5
注 册:2013-1-25
收藏
得分:0 
回复 3楼 kknd84913
在删除学生姓名那里有scanf的参数是&sname,sname是数组名吧?
2013-01-28 16:20
kknd84913
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2012-12-26
收藏
得分:0 
回复 4楼 c10121209
是啊 那里有问题吗?
2013-01-28 16:50
c10121209
Rank: 1
等 级:新手上路
帖 子:18
专家分:5
注 册:2013-1-25
收藏
得分:0 
回复 5楼 kknd84913
你把&去掉看看 我记得 数组名相当于指针常量来着
2013-01-28 17:26
kknd84913
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2012-12-26
收藏
得分:0 
回复 6楼 c10121209
没用 一样不能执行
2013-01-28 17:56
liutingluhe
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-1-28
收藏
得分:0 
你的头文件少了个吧,应该还有#include <string.h>
2013-01-28 18:47
快速回复:关于双向链表的问题
数据加载中...
 
   



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

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