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

这是联接哪2个链表啊

2013-12-04 
这是连接哪2个链表啊?#include stdlib.h#include stdio.hstruct list{int datastruct list *next}ty

这是连接哪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)
      return pointer->next;
   else
      {
         if(tmp->next->next==NULL)
            tmp->next=NULL;
         else
            tmp->next=temp->next->next;
         return poniter;
      }
}
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,tmp3;
   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 pointer,link pointer2)
{
   link tmp;
   tmp=pointer1;
   while(tmp->next)
      tmp=tmp->next;
   tmp->next=pointer2;
   return pointer1;
}
void main()
{
   int arr1[]={3,12,8,9,11};
   link ptr;
   ptr=create_list(arr1,5);
   selection_sort(ptr,5);
}


delete_node那没怎么看明白,
还有就是连接的是哪2个链表。谢谢
链表
[解决办法]
concatenate函数是把以pointer2以头的链表,接到pointer1链表的后面
[解决办法]
delete_node(link pointer,link temp)函数中temp是当前最小结点的前驱
此函数的功能是删除当前链表中的最小结点。
[解决办法]
代码有些拼写错误,改正后如下:
#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 temp)
{
   if(temp=NULL)
      return pointer->next;
   else
      {
         if(temp->next->next==NULL)
            temp->next=NULL;
         else
            temp->next=temp->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,tmp3;
   int i;
   link pointer;
   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()
{
   int arr1[]={3,12,8,9,11};
   link ptr;
   ptr=create_list(arr1,5);
   selection_sort(ptr,5);
}

热点排行