c语言顺序表的作用,C语言实现顺序表的基本操作

原标题:C语言实现顺序表的基本操作

d4b394ed23704d173514e46be61c5a8a.png

***************************************顺序表.h*************************************************

#include

#include

#include

#define LIST_INIT_SIZE 100

#define LISTINCREMENT 10

#define TRUE 1

#define FLASE 0

typedefint Elemtype;

typedefint Status;

/*接口定义

Status InitList_Sq(SqList &L,int size,int inc);

void CreateList_Sq(SqList &L);

void print_Sq(SqList &L);

int Search_Sq(SqList L, Elemtype e);

Status DestroyList_Sq(SqList &L);

Status ClearList_Sq(SqList &L);

Status ListEmpty_Sq(SqList L);

int ListLength_Sq(SqList L);

Status GetElem_Sq(SqList L, int i, Elemtype &e);

Status PutElem_Sq(SqList &L, int i, Elemtype e);

Status Append_Sq(SqList &L, Elemtype e);

Status DeleteLast_Sq(SqList &L, Elemtype &e);

*/

************************************源代码.h*****************************************************

#include "顺序表.h"

//定义顺序表类型

typedefstruct {

Elemtype *elem;

int length;

int listsize;

int increment;

}SqList;

//初始化顺序表

Status InitList_Sq(SqList &L,int size,int inc) {

L.elem = (Elemtype *)malloc(size * sizeof(Elemtype));

L.length = 0;

L.listsize = size;

L.increment = inc;

return TRUE;

}

//创建顺序表

Status CreateList_Sq(SqList &L) {

int i;

printf("请输入你要创建的顺序表元素个数:\n");

scanf_s("%d", &L.length);

if (L.length >= L.listsize) {

L.elem = (Elemtype *)realloc(L.elem, (L.listsize + L.increment) * sizeof(Elemtype));

}

if (!L.elem) {

return FLASE;

}

printf("请输入你要创建的顺序表:\n");

for (i = 0; i

scanf_s("%d", &L.elem[i]);

}

}

//遍历顺序表

void print_Sq(SqList &L) {

int i;

for (i = 0; i

printf("%4d", L.elem[i]);

}

}

//查找元素的位置

int Search_Sq(SqList L, Elemtype e) {

int i = 0;

while (L.elem[i] != e&&i

i++;

}

if (i>L.length)

return -1;

else

return i + 1;//因为C语言是从下标为0开始的,当i=0时表示第一个元素

}

//销毁顺序表

Status DestroyList_Sq(SqList &L) {

if (L.elem == NULL)

return -1;

else

free(L.elem);

printf("\n销毁成功\n");

return TRUE;

}

//清空顺序表

Status ClearList_Sq(SqList &L) {

if (L.elem == NULL)

exit(0);

int i;

Elemtype *p_elem = L.elem;

for (i = 0; i

*L.elem = NULL;

L.elem++;

}

L.elem = p_elem;

}

//判断顺序表是否为空

Status ListEmpty_Sq(SqList L) {

int i;

Elemtype* p_elem = L.elem;

for (i = 0; i

if (*L.elem != 0) {

L.elem = p_elem;

return FLASE;

}

L.elem++;

}

return TRUE;

}

//求顺序表的长度

int ListLength_Sq(SqList L) {

return L.length;

}

//用e返回顺序表L中第i个元素的值

Status GetElem_Sq(SqList L, int i, Elemtype &e) {

int j;

Elemtype* p_elem = L.elem;

if (i<1 || i>L.length)

return FLASE;

for (j = 1; j <= i; j++)

L.elem++;

e = *L.elem;

L.elem = p_elem;

return TRUE;

}

//将顺序表L中第i个元素赋值为e

Status PutElem_Sq(SqList &L, int i, Elemtype e) {

L.elem[i - 1] = e;

return TRUE;

}

//在顺序表L表尾添加元素e

Status Append_Sq(SqList &L, Elemtype e) {

L.elem[L.length] = e;

L.length++;

L.listsize += L.increment;

return TRUE;

}

//删除顺序表L表尾元素

Status DeleteLast_Sq(SqList &L, Elemtype &e) {

e = L.elem[L.length - 1];

L.length--;

return TRUE;

}

********************************************主函数.c*************************************************

#include

#include

#include "顺序表.h"

#include "源代码.h"

//--------------------主函数入口--------------------

int main(){

SqList L;

int size, inc;

int e;

int a;

int length;

int i;

int temp;

int j=10;

int ee;

printf("\n--------------------顺序表初始化------------------\n");

printf("请输入顺序表的长度size以及扩容量:\n");

scanf_s("%d %d", &size, &inc);

InitList_Sq(L, size, inc);

CreateList_Sq(L);

printf("\n--------------------判断是否为空------------------\n");

if(ListEmpty_Sq(L)){

printf("该顺序表为空\n");

}

else

printf("该顺序表不为空\n");

printf("\n--------------------遍历顺序表--------------------\n");

printf("此时顺序表为:\n");

print_Sq(L);

printf("\n--------------------查找元素----------------------\n");

printf("\n请输入要查找的元素:\n");

scanf_s("%d",&e);

a = Search_Sq(L, e);

printf("%d为第%d位:\n",e,a);

printf("\n--------------------输出长度----------------------\n");

length = ListLength_Sq(L);

printf("顺序表的长度为%d\n",length);

printf("\n----------将顺序表L中第i个元素赋值为temp----------\n");

printf("请输入第i个元素的i值和temp值:\n");

scanf_s("%d %d",&i,&temp);

PutElem_Sq(L, i, temp);

printf("\n此时顺序表为:\n");

print_Sq(L);

printf("\n---------------在顺序表表尾添加元素---------------\n");

Append_Sq(L, j);

printf("\n此时顺序表为:\n");

print_Sq(L);

printf("\n---------------在顺序表表尾删除元素---------------\n");

DeleteLast_Sq(L, ee);

printf("\n被删除的元素为%d\n",ee);

printf("此时顺序表为:\n");

print_Sq(L);

printf("\n-------------------清空顺序表---------------------\n");

ClearList_Sq(L);

if(ListEmpty_Sq(L)){

printf("\n清空成功\n");

}

printf("\n------------------销毁顺序表----------------------\n");

DestroyList_Sq(L);

getchar();

getchar();

return 0;

责任编辑:

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值