#include <stdio.h>
#define MAX_SIZE 100
typedef int DataType;
typedef struct{
DataType data[MAX_SIZE];
int top;
int length;
}SeqList;
int ListCount(SeqList L);//Count
void InitList(SeqList *L);//Init
void PushList(SeqList *L,DataType y);//Insert
void InsList(SeqList *L,DataType y,int index);//Insert
int Locate(SeqList L,DataType y);//Locate
DataType GetData(SeqList L,int index);//GetData
void DelListByData(SeqList *L,DataType y);//Delete Data by data
void DelListByIndex(SeqList *L,int index);//Delete Data by index
void ReverseList(SeqList *L);//Reverse List
void SortBig(SeqList *L);//Sort from big to small
void SortSmall(SeqList *L);//Sort from small to big
int main(){
SeqList list;
int i= NULL;
InitList(&list);
for(i = 100; i > 0;i--){
list.top++;
list.data[list.top]= i;
printf("%d ",list.data[i]);
}
}
//Init
void InitList(SeqList *L){
L->length = MAX_SIZE;
L->top = -1;
}
//Return ListCount
int ListCount(SeqList L){
return L.top+1;
}
//Push
void PushList(SeqList *L,DataType y){
if(L->top+1 > L->length) return -1;
L->top++;
L->data[L->top] = y;
}
//Insert
void InsList(SeqList *L,DataType y,int index){
int i = NULL;
if(L->top+1>L->length){
return -1;
}
L->top++;
for(i=L->top;i>=index;i--){
L->data[i] = L->data[i-1];
}
L->data[index] = y;
}
//Locate data
int Locate(SeqList L,DataType y){
int i = NULL;
for(i=0;i<L.top+1;i++){
if(L.data[i] == y){
return i;
}
}
return -1;
}
//Get Data by index
DataType GetData(SeqList L,int index){
return L.data[index];
}
//Delete Data by data
void DelListByData(SeqList *L,DataType y){
int i = NULL;
int j = NULL;
for(i = 0 ; i <L->top+1 ; i++){
if(L->data[i]==y){
for(j=i;j<L->top;j++){
L->data[j] = L->data[j+1];
}
}
}
L->top--;
}
//Delete Data by index
void DelListByIndex(SeqList *L,int index){
int i = NULL;
for(i = index;i<L->top;i++){
L->data[i] = L->data[i+1];
}
L->top--;//retain the last node,just minus the top
}
//Reverse List
void ReverseList(SeqList *L){
int i = NULL;
int j = L->top;
DataType temp = NULL;
for(i=0;i<(L->top+1)/2;i++,j--){
temp = L->data[i];
L->data[i] = L->data[j];
L->data[j] = temp;
}
}
//Sort from big to small
void SortBig(SeqList *L){
int i=NULL;
int j=NULL;
DataType temp=NULL;
for(i=0;i<L->top+1;i++){
for(j=i+1;j<L->top+1;j++){
if(L->data[i]<L->data[j]){
temp=L->data[i];
L->data[i]=L->data[j];
L->data[j]=temp;
}
}
}
}
//Sort from small to big
void SortSmall(SeqList *L){
int i = NULL;
int j = NULL;
DataType temp = NULL;
for(i=0;i<L->top+1;i++){
for(j=i+1;j<L->top+1;j++){
if(L->data[i]>L->data[j]){
temp=L->data[i];
L->data[i] = L->data[j];
L->data[j] = temp;
}
}
}
}
线性表——静态顺序表
最新推荐文章于 2024-10-09 15:33:29 发布