C 练习实例74

C 语言经典100例 C 语言经典100例

题目:连接两个链表。

程序分析:无。

实例

// Created by www.icodebang.com on 15/11/9.
// Copyright © 2015年 本站教程. All rights reserved.
//
 
#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);
}

C 语言经典100例 C 语言经典100例

0 个评论

要回复文章请先登录注册