C语⾔顺序表的定义以及各类操作
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define maxsize 1024
typedef int datatype;
// #define int datatype
//顺序表的定义
typedef struct
{
datatype table[maxsize];//静态数组存放数据元素
int length;//当前顺序表已经存⼊元素长度
}sequenList;
//初始化表,分配内存空间
void InitList(sequenList *L){
printf("进⼊初始化\n");
// for (int i = 0; i < maxsize; ++i)
// {
//  L->table[i]=0;
// }
// L->length=0;
printf("初始化完毕\n");
}
//创造数据
void CreateList(sequenList *L,int i){
printf("进⼊创建元素\n");
for (int j = 0; j < i; j++)
{
printf("createing\n");
L->table[j]=j+2;
printf("create:%d\n",L->table[j]);
}
printf("创建完毕\n");
L->length=i;//表长在创造完元素赋予
}
//输出表
void PrintList(sequenList *L){
printf("进⼊输出元素\n");
for (int i = 0; i < L->length; ++i)
{
printf("%d\n",L->table[i] );
}
printf("输出完毕\n");
}
L->length=0;
printf("置空完毕");
}
//按值查
int LocateElem(sequenList *L,datatype i){
int j;
for (j = 0; j < L->length; ++j)
{
if (L->table[j] == i)
{
return (j+1);//结束⽅法体
}
}
}
//按位查
int GetElem(sequenList *L,int i){
if (0<=i&&i<L->length)
{
printf("按位查存在值为:%d\n",L->table[i]);  return L->table[i];
}
else
{
printf("按位查不存在\n");
return 0;
}
}
//插⼊操作
int ListInsert(sequenList *L,int i,int item){
printf("进⼊插⼊操作\n");
L->length++;
if(i < 1 && i > (L->length)){
return 0;
}
for (int j = L->length-1; j > i; j--)
{
L->table[j]=L->table[j-1];
}
L->table[i-1]=item;
printf("表长为:%d\n",L->length);
return 1;
}
printf("进⼊删除操作\n");
if (i<1&&i>L->length)
{
return 0;
}
for (int j = i; j < L->length; j++)
{
L->table[j-1]=L->table[j];
}
L->length--;
return 1;
}
//销毁操作
void DestoryList(sequenList *L){
free(L);
printf("销毁完成\n");
}
int main(){
sequenList (*L);
L=(sequenList *)malloc(sizeof(sequenList));//分配内存空间
InitList(L);//初始化表
CreateList(L,10);//创建表元素
PrintList(L);//输出表元素
printf("按值查返回位置:%d\n",LocateElem(L,7));//按值查
GetElem(L,5);//按位查
c语言listinsert函数
ListInsert(L,11,16)>0?printf("插⼊成功\n"):printf("插⼊失败\n");//插⼊操作 PrintList(L);
DeleteList(L,5)>0?printf("删除成功\n"):printf("删除失败\n");//删除操作
PrintList(L);
DestoryList(L);//销毁操作
PrintList(L);
return 0;
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。