首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

初级链表。电话本的简单创建。有点小困难。求解啊多谢、

2012-03-24 
初级链表。。。电话本的简单创建。。。有点小困难。。。求解啊。。。谢谢、、、#include stdio.h#include stdlib.h#in

初级链表。。。电话本的简单创建。。。有点小困难。。。求解啊。。。谢谢、、、
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct information
{
  char name[10];
  char telephone[15];
  char num[10];
  struct information *next;
};
struct information *head=NULL,*temp=NULL,*tail=NULL;

void creat()
{
  tail=(struct information *)malloc(sizeof(struct information));
  printf("请输入要添加联系人的信息:\n");
  printf("姓名:");
  scanf("%s",tail->name);
  printf("手机号码:");
  scanf("%s",tail->telephone);
  printf("住宅号码:");
  scanf("%s",tail->num);
  temp->next=tail;
  temp=tail;

  tail->next=NULL;

}
void search()
{
  char name1[10];
  printf("请输入要查找的人名:");
  scanf("%s",name1);
  temp=tail=head->next;
  for(;tail!=NULL;)
  {
  if(strcmp(tail->name,name1)==0)
  {
  printf("手机号码:%s\n住宅号码:%s\n",tail->telephone,tail->num);
  return;
  }
  tail=tail->next;
  }
  printf("对不起,没有找到这个人。\n");
}
void insert()
{
  char name1[10];
  struct information *p;
  printf("请输入要插入位置之前的人名:");
  scanf("%s",name1);
  tail=temp=head->next;
  for(;tail!=NULL;)
  {
  if(strcmp(name1,tail->name)==0)
  {
  p=(struct information *)malloc(sizeof(struct information));
  printf("请输入要添加联系人的信息:\n");
  printf("姓名:");
  scanf("%s",p->name);
  printf("手机号码:");
  scanf("%s",p->telephone);
  printf("住宅号码:");
  scanf("%s",p->num);
  tail = temp->next;
temp->next = p;
p->next = tail;
printf("插入成功!\n");
  return;
  }
  temp=tail=tail->next;
  }
  printf("对不起,无法在此人之后输入信息!\n");
}
void delete()
{
  char name[10];
  tail=temp=head->next;
  printf("请输入要删除的联系人姓名:");
  scanf("%s",name);
  for(;tail!=NULL;)
  {
  temp=tail;
  if(strcmp(tail->name,name))
  {
  temp->next=tail->next->next;
  printf("删除成功!\n");
  return;
  }
  temp=tail=tail->next;
  }
}
void output()
{
  tail=head->next;
  for(;tail!=NULL;)
  {
  printf("姓名:%s\n手机号码:%s\n住宅号码:%s\n",tail->name,tail->telephone,tail->num);
  tail=tail->next;
  }
}
int main()
{
  int k;
  temp=(struct information *)malloc(sizeof(struct information));
  head=tail=temp;
  tail->next=NULL;
  do
  {
  printf(" 0: exit\n"); /* 打印菜单项 */
  printf(" 1: creat\n");
  printf(" 2: search\n");
  printf(" 3: insert\n");
  printf(" 4: delete\n");
  printf(" 5: output\n");


  printf("please select:");
  scanf("%d",&k); /* 输入选择项 */
  switch(k)
  {
  case 0:
  exit(0); /* 退出函数 */
  case 1:
  creat( );
  break;
  case 2:
  search( );
  break;
  case 3:
  insert( );
  break;
  case 4:
  delete( );
  break;
  case 5:
  output( );
  break; /* 调用子函数 */
  default:
  exit(0);
  }
  }
  while(1);
  return 0;

}
题目

标题: 3、电话薄 
时 限: 1000 ms 
内存限制: 10000 K 
总时限: 3000 ms 
描述: 1.编写手机电话薄管理程序,用结构体实现下列功能:
  (1) 手机电话薄含有姓名、宅电、手机3项内容,建立含有上述信息的电话簿。
  (2)输入姓名,查找此人的号码。
  (3)插入某人的号码。
  (4)输入姓名,删除某人的号码。
  (5)将以上功能分别用子函数实现,编写主函数,可以根据用户的需要,调用相应的子函数。
  建议用结构体完成,可参考P204【例7-2】。 
输入:  
输出:  
输入样例:  
输出样例:  
提示: 1、程序主函数如下所示,请认真理解,不要更改代码。
int main(void) /* 主函数 */
{
  int k;
  do
  {
  printf(" 0: exit\n"); /* 打印菜单项 */
  printf(" 1: creat\n");
  printf(" 2: search\n");
  printf(" 3: insert\n");
  printf(" 4: delete\n");
  printf(" 5: output\n");
  printf("please select:");
  scanf("%d",&k); /* 输入选择项 */
  switch(k)
  {
  case 0:
  exit(0); /* 退出函数 */
  case 1:
  creat( );
  break;
  case 2:
  search( );
  break;
  case 3:
  insert( );
  break;
  case 4:
  delete( );
  break;
  case 5:
  output( );
  break; /* 调用子函数 */
  default:
  exit(0);
  }
  }
  while(1);
  return 0;
}
2、根据主函数,设计相应函数完成指定功能。
3、create时,可用while(1)循环连续创建,当输入
 
这段代码删除功能无法实现,是为什么?而且插入时,在输出,有可能会出现乱码,这是怎么回事?求解。。。

[解决办法]
天啊,lz贴代码的时候选个合适的语言,看着头晕

热点排行