数据结构的问题,急需!

来源:百度知道 编辑:UC知道 时间:2024/06/15 10:35:26
#include<stdlib.h>
#define NULL 0
#define R 100
#define YSGS 20
typedef int DataType;
struct Node;
typedef struct Node *PNode,*LinkList;
struct Node
{
DataType info;
PNode link;
};
LinkList createNullList_link(void)
{
LinkList llist;
llist=(LinkList)malloc(sizeof(struct Node));
if(llist!=NULL)
{llist->link=NULL;llist->info=-100;}
return(llist);
}
int insert_link(LinkList llist,int i,DataType x)
{
PNode p,q;int j=0;
p=llist;
while(p!=NULL&&j<i)
{p=p->link;j++;}
if(j!=i)
{printf("\nThe value of i=%d is not reasonable.\n",i);return(0);}
q=(PNode)malloc(sizeof(struct Node));
if(q==NULL)
{printf("\nOut of space!!\n"); return(0);}
else
{q->info=x;q->link=p->link;p->link=q; return(1);}
}
int isNullList_link(LinkList llist)
{

排序是这样的,合并很简单,随便让一个单链表的尾部指向第二个链表的head,再做次排序即可。

void change( stu *s, stu *p, stu *head )
{
stu *tmp1 = head, *tmp2 = head;
while ( tmp1->next != s )
{
tmp1 = tmp1->next;
}
while ( tmp2->next != p )
{
tmp2 = tmp2->next;
}
tmp1->next = p;
p->next = s->next;
s->next = tmp2->next->next;
tmp2->next = s;
}

void sort( stu* head )
{
stu *p = head, *s = head;
while ( s->next )
{
p = s->next;
while ( p )
{
if ( s->num > p->num )
change( s, p, head );
p = p->next;
}
s = s->next;
}
}