顺序表
#include <stdio.h>
#include "seqlist.h"
int main()
{
Pseqlist seq1;
seq1 = create_null_seqlist(20);
for(int i = 0; i < 18; i++){
seq1->element[i] = i + 1;
seq1->n++;
}
print_seqlist(seq1);
if(!disordered(seq1))
printf("ordered!\n");
permute(seq1);
print_seqlist(seq1);
if(disordered(seq1))
printf("disordered!\n");
return 0;
}
#include "seqlist.h"
#include <stdlib.h>
Pseqlist create_null_seqlist(int m)
{
Pseqlist palist = (Pseqlist)malloc(sizeof(struct seqlist));
palist->maxnum = m;
palist->n = 0;
palist->element = (DataType*)malloc(sizeof(DataType) * m);
return palist;
}
void print_seqlist(Pseqlist palist)
{
for(int i = 0; i < palist->n; i++)
printf("%d ", palist->element[i]);
printf("\n");
}
void permute(Pseqlist palist)
{
srand(time(0));
for(int i = palist->n - 1; i > 0; i--)
_swap(palist->element + i, palist->element + (rand() % i));
}
void _swap(int* x, int* y)
{
int temp;
temp = *x;
*x = *y;
*y = temp;
}
int disordered(Pseqlist palist)
{
int order = 0;
for(int i = 0; i < palist->n; i++)
if(palist->element[i] > palist->element[i + 1])
order++;
return order;
}
#ifndef _SEQLIST_H_
#define _SEQLIST_H_
typedef int DataType;
struct seqlist
{
int maxnum;
int n;
DataType* element;
};
typedef struct seqlist* Pseqlist;
Pseqlist create_null_seqlist(int m);
void print_seqlist(Pseqlist palist);
void permute(Pseqlist palist);
void _swap(int* x, int* y);
int disordered(Pseqlist palsit);
#endif // _SEQLIST_H_