数据结构线
性表特点:
直接前驱;直接后驱;
顺序表:
长度(可变)
容量(不可变)
如何自己编写一个头文件:
#ifndef SEQUENCE_H
#define SEQUENCE_H //格式
#define size 10
#define SUCCESS 10000
#define FAILURE 10001
#define TRUE 10002
#define FALSE 10003 //宏定义
typedef int fffff;
struct sequencelist //头文件中一般存放主程序需要用到的子函数声明,结构体定义等;
{
int length;
fffff *data;
};
typedef struct sequencelist sequ;
int SEQUENCEinit(sequ *s);
int SequenceInsert(sequ *s, int p, fffff e);
int ggg(sequ s);
int aaa(sequ s);
int GET(sequ l, int p, fffff *e);
int SequenceTraverse(sequ l,void (*p)(fffff));
int Sequencefind(sequ l,int p, int (*q)(fffff e1,fffff e2));
int Sequencedelete(sequ *l, int p,fffff *e);
int Sequenceclear(sequ *l);
int Sequencedestroy(sequ *l);
#endif //格式
顺序表的初始化:
ret = SEQUENCEinit(&list); //主函数中的代码
if(ret == SUCCESS)
{ printf("INIT SUCCESS\n");
}
else
{
printf("INIT FAILURE\n");
}
int SEQUENCEinit(sequ *s) //子函数代码
{
if(s == NULL)
{
return FAILURE;
}
s->data = (fffff *)malloc(sizeof(fffff) * size);
s->length = 0;
return SUCCESS;
}
顺序表插入:
for(i = 0; i < 5; i++) //主函数中
{
ret = SequenceInsert( &list, i + 1, rand() % 10);
if(ret == SUCCESS)
{
printf("Insert SUCCESS\n");
}
if(ret == FAILURE)
{
printf("Insert FAILURE\n");
}
}
int SequenceInsert(sequ *l, int p, fffff e)
{
int i;
if(NULL == l || l->data == NULL)
{
return FAILURE;
}
if(p > l->length + 1 || p < 1 || l->length >= size)
{
return FAILURE;
}
for(i = 0; i < l->length - p + 1; i++)
{
l->data[l->length - i] = l->data[l->length - i - 1];
}
l->data[p - 1] = e;
l->length++;
return SUCCESS;
}