/*
顺序表
VS2010调试
*/
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <string.h>
#define LIST_INIT_SIZE 50
struct SeqList
{
int *elem;
int length;
int max_size;
};
//初始化顺序表
int fnInitList(struct SeqList *L)
{
L->elem = (int *)malloc(LIST_INIT_SIZE * sizeof(int));
memset(L->elem, 0, LIST_INIT_SIZE * sizeof(int));
if(L->elem == NULL)
{
return 0;
}
L->length = 0;
L->max_size = LIST_INIT_SIZE;
return 1;
}
//释放表空间
void fnEndList(struct SeqList *L)
{
free(L->elem);
}
//判断是否为空
int fnIsEmptyList(struct SeqList L)
{
if(L.length == 0)
{
return 1; //length is zero
}
return 0;
}
//插入结点,在pos的位置插入num
int fnInsertList(struct SeqList *L, int pos, int num)
{
int i = 0;
if((pos < 0) || (pos > L->length))
{
return 0; //the pos is out of bounds
}
if(L->length == L->max_size)
{
return 0; //overflow
}
for(i = L->length; i >= pos; i--)
{
L->elem[i+1] = L->elem[i];
}
L->elem[i+1] = num;
L->length++;
return 1;
}
//删除结点,在pos的位置删掉元素,存到x中
int fnDeleteNum(struct SeqList *L, int pos, int *x)
{
int i = 0;
if(pos < 0 || pos >= L->length)
{
return 0;
}
*x = L->elem[pos];
for(i = pos; i < L->length; i++)
{
L->elem[i] = L->elem[i+1];
}
L->length--;
return 1;
}
//打印顺序表
void fnPrintList(struct SeqList L)
{
int i = 0;
for(i = 0; i < L.length; i++)
{
printf("%d ",L.elem[i]);
}
printf("\n");
}
//查找,num是否在表中
int fnSearchNum(struct SeqList L, int num)
{
int i = 0;
for(i = 0; i < L.length; i++)
{
if(L.elem[i] == num)
{
return i;
}
}
return -1;
}
//更新,将pos位置的元素改为num
int fnUpdateList(struct SeqList *L, int pos, int num)
{
if(pos < 0 || pos >= L->length)
{
return 0;
}
L->elem[pos] = num;
return 1;
}
int main(int argc, char *argv[])
{
struct SeqList La;
struct SeqList Lb;
int num = 0;
fnInitList(&La);
fnInsertList(&La, 0, 9);
fnInsertList(&La, 0, 8);
fnInsertList(&La, 0, 7);
fnInsertList(&La, 1, 5);
fnPrintList(La);
fnUpdateList(&La, 2, 87);
fnDeleteNum(&La, 3, &num);
fnPrintList(La);
fnEndList(&La);
return 0;
}
线性表——顺序表的实现
最新推荐文章于 2022-07-05 21:35:57 发布