Example #1
0
int main(void)
{
      link_plist l;

      init_linklist(&l);
      create_linklist(l); //创建链表
      show_linklist(l);   //显示未排序的链表
      link_sort(l);   //对链表排序
      show_linklist(l);  //显示已排好序的链表
      return 0;
}
Example #2
0
int main()
{
	LinkNode *list = NULL;
	int i;
	int n, base;
	
	scanf("%d%d", &n, &base);	
	list = creat_linknode(1);
	for(i = n; i > 1 ; i --)	
		insert_linklist(list, i);
	show_linklist(list);
	list = joseph(list, base);
	show_linklist(list);
	free_linklist(list);
	return 0;
}
Example #3
0
void link_sort(link_plist l)
{
      link_plist p,q,t1,t2;
      
      p = l->next;
      l->next = NULL;
      while(p != NULL)
      {
	    q = p;
	    p = p->next;
	    //在排好序的链表中寻找q的位置
#if 1
	    for(t1 = l,t2 = l->next;t2 != NULL;t1 = t2,t2 = t2->next)
		  if(t2->data > q->data)
			break;
#else
	    t1 = l;
	    t2 = l->next;
	    while(t2 != NULL && t2->data < q->data){
		  t1 = t2;
		  t2 = t2->next;
	    }
#endif
	    //将q指向的结点插入到t1和t2之间
	    q->next = t2;
	    t1->next = q;
	    show_linklist(l);
      }
}
Example #4
0
int main()
{
	linknode_t *lista = NULL,
			 *listb = NULL,
			 *listc = NULL;

	lista = creat_empty_linklist();
	listb = creat_empty_linklist();
	listc = creat_empty_linklist();
	
	get_data(lista);
	get_data(listb);

	show_linklist(lista);
	show_linklist(listb);

	listc = combine_linklist(lista,listb);
	show_linklist(listc);

	return 0;
}