69,371
社区成员
发帖
与我相关
我的任务
分享
LinkList Creat_LinkList()
/*带头指针的单连表*/
{
LinkList L=NULL;
LNode *s,*r=NULL,*p=NULL;
int x; /*设数据元素的类型为int*/
scanf("%d",&x);
while (x!=flag)
{
s=(LinkList)malloc(sizeof(LNode)); s->data=x;
if (L==NULL) {L=s;} /*第一个结点的处理*/
else r->next=s; /*其它结点的处理*/
r=s; /*r 指向新的尾结点*/
scanf("%d",&x);
}
if ( r!=NULL) r->next=NULL; /*对于非空表,最后结点的指针域放空指针*/
return L;
}
#include <stdio.h>
#include <stdlib.h>
typedef int ElemType;
typedef struct node
{
ElemType data;
struct node* next;
}LinkList;
void CreatList(LinkList **head, int A[], int n)
{
int i;
LinkList *L = *head;
LinkList *s;
for (i = 0; i < n; i++)
{
s = (LinkList *)malloc(sizeof(LinkList));
s->data = A[i];
s->next = L->next;
L->next = s;
}
}
/*选择排序*/
void SelectSort(LinkList **L)
{
LinkList *p = (*L)->next;
LinkList *q, *minp;
int temp;
while ( p != NULL && p->next != NULL)
{
minp = p;
q = p->next;
while(q!=NULL)
{
if(q->data < minp->data)
minp = q;
q = q->next;
}
if(minp != p)
{
temp = minp->data;
minp->data = p->data;
p->data = temp;
}
p = p->next;
}
}
/*直接插入排序*/
void InsertSort(LinkList **L)
{
LinkList *p = (*L)->next, *q, *r;
if(p != NULL)
{
r = p->next;
p->next=NULL;
p = r;
while(p != NULL)
{
r = p->next;
q = (*L);
while(q->next != NULL && q->next->data < p->data)
q = q->next;
p->next = q->next;
q->next = p;
p = r;
}
}
}
int main()
{
int num[10] = {2,4,5,7,6,7,1,3,9,0};
LinkList *head, **LList;
head = (LinkList *)malloc(sizeof(LinkList));
head->next= NULL;
LList = &head;
CreatList(LList, num, 10);
InsertSort(LList);/*SelectSort(LList);*/
return 1;
}