头文件
#ifndef _SEQUENCELIST_H #define _SEQUENCELIST_H #define SIZE 20 #define SUCCESS 10000 #define FAILURE 100001 typedef int Elemtype; struct Sequencelist { int length; //数据域 Elemtype *data; //指针域 }; typedef struct Sequencelist SeList; //把结构体重新申明叫Selist //函数申明 int SequenceInit(SeList *l); //初始化操作,建立一个新的线性表l int SequenceTraverse(SeList l, void (*p)(Elemtype)); //遍历线性表 int Sequencesort(SeList *l,int p,Elemtype e); #endif
自定义函数
#include "Sequencelist.h" #include <stdlib.h> int Sequencesort(SeList *l,int p,Elemtype e) { if(NULL == l || NULL == l -> data) { return FAILURE; } if(p > l->length + 1 || l->length >= SIZE || p < 1) { return FAILURE; } int i, k; if(p == 1) { l -> data[0] = e; l -> length++; return SUCCESS; } else { for(i = 0; i < l -> length; i++) { if(e < l -> data[i]) { for(k = 0; k < l -> length -i ; k++) { l -> data[l -> length - k] = l -> data[l -> length - 1 - k]; } l -> data[i] = e; l -> length++; return SUCCESS; } } l->data[l->length] = e; l->length++; return SUCCESS; } } int SequenceTraverse(SeList l, void (*p)(Elemtype)) //遍历函数 { if(NULL == p) { return FAILURE; } int i; for(i = 0; i < l.length; i++) { p(l.data[i]); } return SUCCESS; }
main函数
#include "Sequencelist.h" #include <stdio.h> #include <stdlib.h> #include <time.h> void print(Elemtype e) { printf("%d ",e); } int main() { int ret, i,*p; SeList list; srand(time(NULL)); printf("创建一个空的线性表:\n"); ret = SequenceInit(&list); //创建一个空的线性表 if(SUCCESS == ret) { printf("创建成功!\n"); } else { printf("创建失败!\n"); } printf("\n"); for(i = 0; i < 20; i++) { ret = Sequencesort(&list, i + 1,rand() % 10); if(FAILURE == ret) { printf("插入排序失败!\n"); } else { printf("插入排序成功!\n"); } } SequenceTraverse(list,print); printf("\n"); return 0; }