| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 532 人关注过本帖
标题:关于链表的一道c语言题!
只看楼主 加入收藏
我为C痴
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-8-31
收藏
 问题点数:0 回复次数:1 
关于链表的一道c语言题!
题目:函数del_node用于从头指针为head的链表中删除数据成员name与字符串str1相等的第一个节点(结构体类型标识符student定义如下)。
完成del_node函数
我在完成实验的时候,在进行字符串str1输入的时候老是提示出现内存错误。修改了N久,还是不能运行成功。向各位爱好编程的朋友请教下,万分感谢。
代码如下:
#include<stdio.h>
#include<stdlib.h>
struct  student {
   char name[9];
   int score;
   struct student *next;
}*head;
struct student *CreateNode(int nodeNumbers)//创建节点
{
    struct student *p;
    p=(struct student *)malloc(sizeof(struct student));
    if(p==NULL)
    {
        printf("NO enough memory to alloc");
        exit(0);
    }
    p->next=NULL;
    scanf("\n%d %s",&(p->score),p->name);
    printf("\nCreate a new node!");
    return p;
}
void DispLink(struct student *head)
{
    struct student *p;
    int j=1;
    p=head;
    do{
        printf("\n%5d%10d %s\n",j,p->score,p->name);
        p=p->next;
        j++;
    }while (p!=NULL);
}
struct student *Del_node(struct student *head, char *str1)
{
 //  char *str1=NULL;
   struct student *p,*pr;
   if(head==NULL)
   return head;
   p=head;
   while(strcmp(str1,(p->name))!=0&&p->next!=NULL)
   {
      pr=p;
      p=p->next;
   }
   if(!strcmp(str1,(p->name)))
   {
       if(p==head)
       head=p->next;
       else
       pr->next=p->next;
       free(p);
       printf("delete the node");
   }
   else
   {
      printf("\nNot found the Node");
   }
   return head;
}
main()
{
    int i=0;
    struct student *pr;
    char c;
    char arry[9];
    char *str1=arry;
    head=NULL;
    while(1)
    {
        printf("\nPlease press 'i' to insert one new node");
        c=getch();
        if(c!='i'&&c!='q')
        continue;
        if(c=='q')
        break;
        if(i==0)
        {
            head=CreateNode(i);
            pr=head;
        }
        else
        {
            pr->next=CreateNode(i);
            pr=pr->next;
        }
        i++;
    }
    DispLink(head);
    printf("请输入字符串str1:");
    scanf("%s",arry);
    Del_node(head,str1);
    DispLink(head);
}
搜索更多相关主题的帖子: 链表 c语言 
2008-12-08 22:42
我为C痴
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-8-31
收藏
得分:0 
我已经知道错在哪了!!Del_node(head,str1);改为 head=Del_node(head,str1);就行啦
2008-12-08 22:49
快速回复:关于链表的一道c语言题!
数据加载中...
 
   



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

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