2018.08.02

数据结构线

性表特点:

直接前驱;直接后驱;

顺序表:

长度(可变)

容量(不可变)

如何自己编写一个头文件:

#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;
}

猜你喜欢

转载自blog.csdn.net/scv5876666/article/details/81367315