欢迎光临散文网 会员登陆 & 注册

数据结构--顺序表

2023-03-14 16:36 作者:彩虹宝宝一号  | 我要投稿

#include <stdio.h>

#include <stdlib.h>


typedef struct TABLE

{

int* pHead;     //指向首元素

int length; //当前顺序表的长度

int size; //当前元素的数量

}Table;


#define LENGTH 5


Table InitTable()

{

Table t;

t.pHead = (int*)malloc(sizeof(int) * LENGTH);

if (!t.pHead)

{

printf("初始化失败!\n");

exit(0);

}

t.length = LENGTH;

t.size = 0;

return t;

}


//遍历顺序表

void DisplayTable(Table t)

{

if (NULL==t.pHead  || t.length ==0)

{

return;

}

for (int i = 0; i < t.size; i++)

{

printf("%d ", t.pHead[i]);

}

printf("\n");

}


//插入元素

void InsertTable(Table* pT, int value, int n)

{

//判断插入位置是否有效

if (!pT || !pT->pHead)

{

return;

}

if (n-1 > pT->size || n < 1)

{

printf("插入位置有误!\n");

return;

}

//判断空间是否够用

if (pT->length == pT->size)

{

pT->pHead = realloc(pT->pHead, sizeof(int) * (pT->length + 1));

pT->length++;

if (pT->pHead == NULL)

{

printf("扩容失败\n");

exit(0);

}

}

for (int i = pT->size; i >= n; i--)

{

pT->pHead[i] = pT->pHead[i - 1];

}

pT->pHead[n - 1] = value;

pT->size++;


}


//删除元素

void DeleteTable(Table* pT, int n)

{

if (n > pT->size || n < 1)

{

printf("删除位置有误!\n");

return;

}

for (int i = n - 1; i < pT->size - 1; i++)

{

pT->pHead[i] = pT->pHead[i + 1];


}

pT->size--;

}


int main()

{

Table t = InitTable();


for (int i = 0; i < 5; i++)

{

InsertTable(&t, i + 10, i + 1);

}


DisplayTable(t);

InsertTable(&t, 15, 6);

DisplayTable(t);

InsertTable(&t, 5, 3);

DisplayTable(t);


DeleteTable(&t, 3);

DisplayTable(t);

return 0;

}


数据结构--顺序表的评论 (共 条)

分享到微博请遵守国家法律