刚学 自己写个大概的静态顺序表
学习内容:
学了个毛
#include <stdio.h>
#include <string.h>
#define MAXSIZE 100
typedef int ElemType ;
typedef struct
{
ElemType data[MAXSIZE];
unsigned int length;
}SeqList,*PSeqList;
//初始化用的
void InitList(PSeqList L);
void ClearList(PSeqList L);
//插入用的
int InsertList(PSeqList L, unsigned int i, ElemType* e);
int HeadInsert(PSeqList L, ElemType* e);
int EndInsert(PSeqList L, ElemType* e);
//删除用的
int DeleteList(PSeqList L, unsigned int i);
int HeadDelete(PSeqList L);
int EndDelete(PSeqList L);
//查询用的
int SearchList(PSeqList L, ElemType* e);
int GetList(PSeqList L, ElemType* e);
//打印用的
void PrintList(PSeqList L, ElemType* e);
//求顺序表长度用的
void LengthList(PSeqList L, ElemType* e);
int mian()
{
SeqList L;
ElemType e;
return 0;
}
//函数实现
//初始化
void InitList(PSeqList L)
{
ClearList(L);
}
//清空顺序表
void ClearList(PSeqList L)
{
if (L == NULL)return;
L->length = 0; //表长为0
memset(L->data, 0, sizeof(ElemType)*MAXSIZE);//数组元素为0
}
//在i位置插入元素
int InsertList(PSeqList L, unsigned int i, ElemType* e)
{
if ((L == NULL) || (e == NULL))return 0;
if (L->length >= MAXSIZE)
{
printf("满了,别插了");
}
int k;
for (k = L->length; k >= i; k--)
{
memcpy(&L->data[k], &L->data[k - 1], sizeof(ElemType));//顺序表从下标1开始存
}
L->length++;
return 1;
}
int HeadInsert(PSeqList L, ElemType* e)
{
InsertList(L, 1, e);//顺序表从下标1开始存
}
int EndInsert(PSeqList L, ElemType* e)
{
InsertList(L, L->length, e);
}
int DeleteList(PSeqList L, unsigned int i)
{
if (L == NULL)return 0;
if ((i<1) || (i>L->length))
{
printf("请在 %d - %d 之间输入\n",1, L->length); return 0;
return 0;
}
int k;
for (k = i; k <= L->length; k++)
{
memcpy(&L->data[k - 1], &L->data[k], sizeof(ElemType));
}
L->length--;
return 1;
}
int HeadDelete(PSeqList L)
{
return DeleteList(L, 1);
}
int EndDelete(PSeqList L)
{
return DeleteList(L, L->length);
};
int SearchList(PSeqList L, ElemType* e)
{
if ((L == NULL) || (e = NULL))return 0;
int k;
for (k = 0; k < L->length; k++)
{
if (L->data[k] == *e)
return k + 1;
}
return 0;
}
void Printf(PSeqList L)
{
if (L == NULL)return;
if (L->length == 0)
{
printf("表啥也没有");
return;
}
int k;
for (k = 0; k < L->length; k++);
{
printf("%d ", L->data[k]);
}
printf("\n");
}
打完之后 在vs2015上编译好多错啊
在dev都没有这么多
困了 睡了