Chinaunix首页 | 论坛 | 博客
  • 博客访问: 116142
  • 博文数量: 29
  • 博客积分: 826
  • 博客等级: 上士
  • 技术积分: 390
  • 用 户 组: 普通用户
  • 注册时间: 2012-06-11 08:30
文章分类
文章存档

2012年(29)

我的朋友

分类: LINUX

2012-07-03 17:00:36

#include
#include
int main()
{
 int i=0;
 struct list
 {
  int age;
  char name[8];
  struct list *next;
  struct list *back;
 };
 struct list *p1,*p2,*p3,*p,*head,*end;
 p1=p2=p=head=end=(struct list*)malloc(sizeof(struct list));
 scanf("%d%s",&p1->age,p1->name);
 while(p1->age!=999)                    //输入age为999退出
 {
  i++;
  if(i==1)                                                 
  {
   head=p3=p1;
   p1->back=NULL;
  }
  else
  {
   p2->next=p1;
   p1->back=p2;
   p2=p1; 
  } 
  p1=(struct list*)malloc(sizeof(struct list));
  scanf("%d%s",&p1->age,p1->name);
 }
 end=p2;
 p2->next=NULL;
 
 p=head;                                       //输出正向
 while(p!=NULL)
 {
  printf("%d  %s\n",p->age,p->name);
  p=p->next; 
 }
 printf("\n");
 p=end;                                       //输出反向
 while(p!=NULL)
 {
  printf("%d  %s\n",p->age,p->name);
  p=p->back; 
 }
 printf("\n");
 
 p=head;
 int k=1;
 
 while(p->age!=25)                     //找到age为25的成员
 {
  k++;
  p=p->next; 
 }
 if(k==1)                              //位于表头
 {
  p1=p->next;
  head=p1;
  p1->back=NULL;
  free(p);
 }
 else if(k==i)                         //位于表尾
 {
  p1=p->back;
  end=p1;
  p1->next=NULL;
  free(p); 
 }
 else
 {
  p1=p->next;
  p2=p->back;
  p1->back=p2;
  p2->next=p1; 
  free(p); 
 }
 
 p=head;
 while(p!=NULL)
 {
  printf("%d  %s\n",p->age,p->name);
  p=p->next; 
 }
 printf("\n");
 p=end;
 while(p!=NULL)
 {
  printf("%d  %s\n",p->age,p->name);
  p=p->back; 
 }
 printf("\n");
}
阅读(1511) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~