#枚举
:将变量的值———列举出来,变量的值只限于列举出来的值的范围内。
***************************数据结构*******************************
注:主要说明 线性结构
#线性表包含顺序表(连续)和链表(不连续)
线性表特点:1.直接前驱, 2.直接后继。
#顺序表
即线性表的顺序结构。
#线性结构
1.顺序结构 是连续的
2.链式存储 是不连续的
*********************************************************************
*顺序表*
1.长度 (是整形)
2.地址
另
长度: 0
容量: 5
//长度不可能超过容量
顺序表 代码:
1.头文件
#ifndef _Sequencelist_h
#define _Sequncelist_h
#define SIZE 10 //
#define SUCCESS 10000
#define FAILURE 10001
#define TRUE 10002
#define FALSE 10003
typedef int ElemType;
struct Sequencelist
{
int length;
ElemType *data;
};
typedef struct Sequencelist Selist;
int SequenceInit(Selist *l);
int SequenceInsrt(Selist *l,int a,ElemType b);
int Sequencelength(Selist l);
int Sequenceempty(Selist l);
int SequenceGetElem(Selist l,int p,ElemType *e);
int SequenceTraverse(Selist l,void(*p)(ElemType));
//int SequenceSearch(Selist l);
int LocateElem(Selist l,ElemType e);
int SequenceDelete(Selist *l,int p,ElemType *e);
int Sequenceclear(Selist *l);
int SequenceDestory(Selist *l);
#endif
2.功能函数
#include<stdio.h>
#include"Sequencelist.h"
#include<stdlib.h>
int SequenceInit(Selist *l)
{
if( NULL == l)
{
return FAILURE;
}
l ->length = 0;
l ->data = (ElemType* )malloc(sizeof(ElemType)*SIZE);
return SUCCESS;
}
int SequenceInsrt(Selist *l,int a,ElemType b)
{
int i;
if( NULL == l || a < 1 || l->length >= SIZE || a > l->length + 1)
{
return FAILURE;
}
else
{
for( i = 0; i < l->length +1 - a;i++)
{
l -> data[l -> length -a] = l -> data[l ->length -a -1];
}
l -> data[a] = b;
l -> length++;
return SUCCESS;
}
}
int Sequencelength(Selist l)
{
return l.length;
}
int Sequenceempty(Selist l)
{
return(l.length == 0)? TRUE:FALSE;
}
int SequenceGetElem(Selist l,int p,ElemType *e)
{
if( p < 1 || p > l.length )
{
return FAILURE;
}
*e = l.data[p -1];
return SUCCESS;
}
int SequenceTraverse(Selist l,void(*p)(ElemType))
{
int i;
if( NULL == p)
{
return FAILURE;
}
else
{
for( i = 0 ;i < l.length;i++)
{
p(l.data[i]);
}
return SUCCESS;
}
}
#if 0
int SequenceSearch(Selist l)
{
int a;
ElemType b;
printf("plz input a number\n");
scanf("%d",&b);
for( a = 0; a < l.length;a++)
{
if ( b == l.data[a])
{
printf("have been fond!\n");
printf("is a %dth number :%d",a+1,l.data[a]);
return SUCCESS;
}
}
return FAILURE;
}
#endif
int LocateElem(Selist l,ElemType e)
{
int i;
for( i = 0 ;i <l.length ;i ++)
{
if( e == l.data[i])
{
return i+1;
}
}
return FAILURE;
}
int SequenceDelete(Selist *l,int p,ElemType *e)
{
int i;
*e = l->data[p -1];
if(NULL == l)
{
return FAILURE;
}
if( p < 1 || p > l->length)
{
return FAILURE;
}
for( i = 0; i < l->length;i++)
{
l->data[p + i -1] = l->data[p + i];
l->length--;
}
return SUCCESS;
}
int Sequenceclear(Selist *l)
{
if( NULL == l)
{
return FAILURE;
}
l->length = 0;
return SUCCESS;
}
int SequenceDestory(Selist *l)
{
if( NULL == l)
{
return FAILURE;
}
l->length = 0;
free(l -> data);
l->data = NULL;
return SUCCESS;
}
3.主函数
#include<stdio.h>
#include"Sequencelist.h"
#include<stdlib.h>
#include<time.h>
void print(ElemType e)
{
printf("%d ",e);
}
int main()
{
int ret,i;
Selist list;
srand(time(NULL));
ret = SequenceInit(&list);
if( SUCCESS == ret)
{
printf("Init Success!\n");
}
for( i = 0 ;i < 5;i++)
{
ret = SequenceInsrt(&list,i+1,rand()%10);
if ( ret == SUCCESS)
{
printf("SUCCESS\n");
}
else
{
printf("FAILURE\n");
}
}
ret = Sequencelength(list);
printf("length is %d\n",ret);
ret = Sequenceempty(list);
{
if( ret == TRUE)
{
printf("is empty\n");
}
else if( ret == FALSE)
{
printf("is not empty\n");
}
}
int p = 1;
ElemType e;
ret = SequenceGetElem(list,p,&e);
{
if( ret == FAILURE)
{
printf("GetElem failure!\n");
}
else
{
printf("%dth elem is %d\n",p,e);
}
}
ret = SequenceTraverse(list,print);
{
if ( ret == FAILURE)
{
printf("Traverse faliure!\n");
}
else if(ret == SUCCESS)
{
printf("Traverse success!\n");
}
}
#if 0
ret = SequenceSearch(list);
{
if( ret == FAILURE)
{
printf("not fond!\n");
}
if( ret == SUCCESS)
{
printf("\n");
}
}
#endif
ret = LocateElem(list,p);
if( ret == FAILURE)
{
printf(" not exist!\n");
}
else
{
printf(" the number %d is the %dth\n ",p,ret);
}
int x = 3;
ret = SequenceDelete(&list,x,&e);
if( ret == SUCCESS)
{
printf(" delete success!\n");
}
else
printf(" delete failure!\n");
ret = Sequenceclear(&list);
if( SUCCESS == ret)
{
printf(" clear success!\n");
}
else
{
printf(" clear failure!\n");
}
ret = SequenceDestory(&list);
if( SUCCESS == ret)
{
printf(" Destory success!\n");
}
else
{
printf(" Destory failure!\n");
}
return 0;
}