连接两个链表。

发布时间:2024年01月24日


?
#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;
}
int main(void)
{
? ? int arr1[]={3,12,8,9,11};
? ? link ptr;
? ? ptr=create_list(arr1,5);
? ? selection_sort(ptr,5);
}

文章来源:https://blog.csdn.net/tesla_shy/article/details/135814300
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。