| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1188 人关注过本帖
标题:求解一道C语言数据结构题!
只看楼主 加入收藏
a765741668
Rank: 1
等 级:新手上路
帖 子:11
专家分:2
注 册:2010-9-30
收藏
得分:0 
哦!谢过!
2011-06-07 18:47
刘定邦
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:687
专家分:1570
注 册:2010-9-21
收藏
得分:0 
学习一下。
2011-06-07 19:17
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
以下是引用voidx在2011-6-7 18:30:55的发言:

if (strcmp(p->name, name)    // 这行写错了
 if (strcmp(p->name, name))    // 应该这样写
楼主 google 一下 strcmp 就明白了


我漏掉了“== 0)”

int isName(contact *p, char *name)
{
    if (strcmp(p->name, name) ==0 )
        return 1;
    return 0;
}

int isSex(contact *p, int sex)
{
    return (p->sex == sex);
}

int isPhoneNumber(contact *p, char *phoneNumber)
{
    if (strcmp(p->phoneNumber, phoneNumber) ==0 )
        return 1;
    return 0;
}

int isEmail(contact *p, char *email)
{
    if (strcmp(p->email, email) ==0 )
        return 1;
    return 0;
}

int isAddress(contact *p, char *address)
{
    if (strcmp(p->address, address) ==0 )
        return 1;
    return 0;
}

[ 本帖最后由 cosdos 于 2011-6-11 10:16 编辑 ]

—>〉Sun〈<—
2011-06-07 23:55
a765741668
Rank: 1
等 级:新手上路
帖 子:11
专家分:2
注 册:2010-9-30
收藏
得分:0 
嗯!难怪,看得纠结!
2011-06-08 08:34
a765741668
Rank: 1
等 级:新手上路
帖 子:11
专家分:2
注 册:2010-9-30
收藏
得分:0 
定义结点时漏了个“;”号!if 语句里面全部少一个左括号了!对了,那个dedint为何意啊!解释一下可以么?
2011-06-08 08:47
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
以下是引用a765741668在2011-6-8 08:47:44的发言:

定义结点时漏了个“;”号!if 语句里面全部少一个左括号了!对了,那个dedint为何意啊!解释一下可以么?


#define MAX 10  // C预处理语句

替换之后程序中所有 MAX 为 10。

—>〉Sun〈<—
2011-06-08 22:51
mandown1991
Rank: 4
等 级:业余侠客
帖 子:262
专家分:252
注 册:2011-3-2
收藏
得分:0 
看不懂!
2011-06-09 10:57
a765741668
Rank: 1
等 级:新手上路
帖 子:11
专家分:2
注 册:2010-9-30
收藏
得分:0 
久经绞尽脑汁,终于小有成就!现发上来给评点评点!虽然代码不怎么同,但效果应该没什么区别!

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
typedef struct NODE
{                          
    char name[10];
    char sxe;
    char tel[15];
    char email[20];
    char adrr[20];            
    struct NODE *next;   
}node,*nod;

nod creater(nod l)/*创建*/        
{
    nod p,p1;
    int x;
    char a;
    x=1;
    l=(nod)malloc(sizeof(node));   /*开辟头结点*/  
    p1=l;
    printf("\n请输入信息:\n");
 while(x)     
  {
      {
        p=(nod)malloc(sizeof(node)); /*开辟空间*/   
        printf("\n姓名:");    /*赋值*/
        scanf("%s",p->name);                                                
        printf("性别:");
        p->sxe=getche();
        printf("\n电话:");
        scanf("%s",p->tel);
        printf("E-mail:");
        scanf("%s",p->email);
        printf("地址:");
        scanf("%s",p->adrr);
        p1->next=p;     /*连接*/   
        p1=p;   /*p1移动*/
      }
        printf("\n是否继续录入?(Y/N)注意大写:");/*判断*/
            a=getche();
            if(a=='N') x=0;
                else x=1;
 }
 p1->next=NULL;      
 return l;
 }
void print(nod l)/*输出*/           
{
  
  nod p;
  p=l->next;            
  printf("\n\n                   通讯者信息                            \n");
  printf("\n************************************************************");
  printf("\n姓名:       性别:        电话:        E-mail:       地址:");
  while(p!=NULL)/*搜索*/
    {
     printf("\n%s        %c       %s      %s       %s",p->name,p->sxe,p->tel,p->email,p->adrr);
     p=p->next;
     }
 printf("\n************************************************************");
 }
void list_find(nod l)/*查找*/           
{
    nod p;
    char a,name1[20];
    int x,n;
    char tel1[15];
    x=1;
while(x)
{
   p=l->next;
   printf("\n姓名查找:1");
   printf("\n电话查找:2");
   printf("\n请选择:");
   scanf("%d",&n);
switch(n)
{
case 1:
    {      
       printf("\n请输入查找者姓名:");
       scanf("%s",name1);
       while(p!=NULL&&strcmp(name1,p->name)!=0) /*比较和判断*/  
        p=p->next;
       break;
     }
case 2:
    {
        printf("\n请输入查找者电话:");
        scanf("%s",tel1);
        while(p!=NULL&&strcmp(tel1,p->tel)!=0)  /*比较和判断*/
        p=p->next;
        break;
    }
}
  if(p==NULL)printf("\n查找错误!");            
  else printf("\n姓名:%s   性别:%c   电话:%s   E-mail:%s   地址:%s",p->name,p->sxe,p->tel,p->email,p->adrr);
   printf("\n是否继续查找?(Y/N)注意大写:");
            a=getche();
            if(a=='N') x=0;
             else x=1;
}
  
}


void set_insert(nod l)/*插入*/
{
      
    nod u,p=l;
    char a;
    int x;
    x=1;
    printf("\n请输入信息:");
    while(p->next!=NULL)  /*搜索至表尾*/
        p=p->next;
    while(x)
    {
        u=(nod)malloc(sizeof(node));   
        printf("\n姓名:");
        scanf("%s",u->name);                                      
        printf("性别:");
        u->sxe=getche();
        printf("\n电话:");
        scanf("%s",u->tel);
        printf("E-mail:");
        scanf("%s",u->email);
        printf("地址:");
        scanf("%s",u->adrr);   
        u->next=p->next; /*连接*/  
        p->next=u;
    printf("\n是否继续插入?(Y/N)注意大写:");
            a=getche();
            if(a=='N') x=0;
                else x=1;
               
   
    }
}
void list_delete(nod l) /*删除*/
{
    nod u,p=l;
    char a,name1[10];
    int x;
    x=1;
    while(x)
    {
    printf("请输入删除者姓名:");
    scanf("%s",name1);
    while(p->next!=NULL&&strcmp(name1,p->next->name)!=0)   /*比较和判断*/
        p=p->next;
    if(p->next==NULL)  
        printf("删除错误!");  
    else
    {
        u=p->next;  
        p->next=u->next;   
        free(u);   /**/
    }
     printf("\n是否继续删除?(Y/N)注意大写:");
            a=getche();
            if(a=='N') x=0;
                else x=1;
               
    }
}
void preserve(nod l)/*保存*/
{
    FILE *fp;
    nod p;
    p=l->next;
    if((fp=fopen("数据.txt","w"))==NULL)
    printf("\n错误!");
    else
    {
        while(p!=NULL)
    {
     fprintf(fp,"%s        %c       %s      %s       %s",p->name,p->sxe,p->tel,p->email,p->adrr);
     p=p->next;
    }
    fclose(fp);
    }
}
void main()
{
    nod L=NULL,q=NULL;
    int n;
    system( "cls ");
    printf("\n          ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆");
    printf("\n                             欢迎使用本程序                           ");
    printf("\n          ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");
    printf("\n                               【1】: 新建通讯录\n");
    printf("\n                               【2】: 通讯者的插入\n");
    printf("\n                               【3】: 通讯者的删除\n");
    printf("\n                               【4】: 通讯者的查询\n");
    printf("\n                               【5】: 通讯录信息的输出\n");
    printf("\n                               【6】: 通讯录的保存\n");
    printf("\n                               【0】: 退出\n");
    while(1)
    {
        printf("\n\n输入相应数字选择功能:");
        scanf("%d",&n);
        if(n==0)break;
        switch(n)     /*选择*/
        {
        
        case 1:
            {
                q=creater(L);               
                break;
            }
        case 2:
            {
               if(q==NULL)q=creater(L);   /* 不当选择时*/
                 else set_insert(q);
                break;
            }
        case 3:
            {
                if(q==NULL)printf("删除错误!");
                  else list_delete(q);
                break;
               
            }
       case 4:
            {
                if(q==NULL)printf("无法查找!");         
                  else list_find(q);               
                break;                                
            }
       case 5:
           {
               if(q==NULL)printf("没有数据!");
                 else print(q);
              break;
           }
       case 6:
           {
               if(q==NULL)printf("无法保存!");
                else preserve(q);
               break;

           }
      
        default:printf("\n选择错误(重选):");/*不在选择范围时*/
    printf("\n                               【1】: 新建通讯录\n");
    printf("\n                               【2】: 通讯者的插入\n");
    printf("\n                               【3】: 通讯者的删除\n");
    printf("\n                               【4】: 通讯者的查询\n");
    printf("\n                               【5】: 通讯录信息的输出\n");
    printf("\n                               【6】: 通讯录的保存\n");
    printf("\n                               【0】: 退出\n");
            
        }


    }

}

 
2011-06-12 08:39
a765741668
Rank: 1
等 级:新手上路
帖 子:11
专家分:2
注 册:2010-9-30
收藏
得分:0 
可能是烦了点,因为不会什么太简单的方法!

 
2011-06-12 08:40
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
代码还可以

—>〉Sun〈<—
2011-06-12 13:46
快速回复:求解一道C语言数据结构题!
数据加载中...
 
   



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

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