2009年9月全国计算机等级考试二级C语言程序设计题(74)
来源:优易学  2011-7-30 16:53:09   【优易学:中国教育考试门户网】   资料下载   IT书店
题目:连接两个链表。
  1.程序分析:
  2.程序源代码:
  #include "stdlib.h"
  #include "stdio.h"
  struct list
  { int data;
  struct list *next;
  };
  typedef struct list node;
  typedef node *link;
  link delete_node(link pointer,link tmp)
  {if (tmp==NULL) /*delete first node*/
  return pointer->next;
  else
  { if(tmp->next->next==NULL)/*delete last node*/
  tmp->next=NULL;
  else /*delete the other node*/
  tmp->next=tmp->next->next;
  return pointer;
  }
  }
  void selection_sort(link pointer,int num)
  { link tmp,btmp;
  int i,min;
  for(i=0;i<num;i++)
  {
  tmp=pointer;
  min=tmp->data;
  btmp=NULL;
  while(tmp->next)
  { if(min>tmp->next->data)
  {min=tmp->next->data;
  btmp=tmp;
  }
  tmp=tmp->next;
  }
  printf("\40: %d\n",min);
  pointer=delete_node(pointer,btmp);
  }
  }
  link create_list(int array[],int num)
  { link tmp1,tmp2,pointer;
  int i;
  pointer=(link)malloc(sizeof(node));
  pointer->data=array[0];
  tmp1=pointer;
  for(i=1;i<num;i++)
  { tmp2=(link)malloc(sizeof(node));
  tmp2->next=NULL;
  tmp2->data=array[i];
  tmp1->next=tmp2;
  tmp1=tmp1->next;
  }
  return pointer;
  }
  link concatenate(link pointer1,link pointer2)
  { link tmp;
  tmp=pointer1;
  while(tmp->next)
  tmp=tmp->next;
  tmp->next=pointer2;
  return pointer1;
  }
  void main(void)
  { int arr1[]={3,12,8,9,11};
  link ptr;
  ptr=create_list(arr1,5);
  selection_sort(ptr,5);
  }

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训