顺序表基本操作的实现
时间: 2023-12-18 11:26:34 浏览: 38
顺序表是一种线性表,它的基本操作包括初始化、插入、删除、查找、遍历等。下面是顺序表基本操作的实现方法:
1. 初始化:顺序表的初始化包括动态分配内存空间和初始化表头信息。具体实现方法如下:
```
Status InitList(SqList &L)
{
L.elem = (ElemType*)malloc(LIST_INIT_SIZE * sizeof(ElemType));
if (!L.elem) exit(OVERFLOW);
L.length = 0;
L.listsize = LIST_INIT_SIZE;
return OK;
}
```
2. 插入:在顺序表的第i个位置插入元素x,需要将第i个位置及其后面的元素依次后移一位,然后将x插入到第i个位置。具体实现方法如下:
```
Status ListInsert(SqList &L, int i, ElemType x)
{
if (i < 1 || i > L.length + 1) return ERROR;
if (L.length >= L.listsize)
{
ElemType* newbase = (ElemType*)realloc(L.elem, (L.listsize + LISINCREMENT) * sizeof(ElemType));
if (!newbase) exit(OVERFLOW);
L.elem = newbase;
L.listsize += LISINCREMENT;
}
ElemType* q = &(L.elem[i - 1]);
for (ElemType* p = &(L.elem[L.length - 1]); p >= q; --p) *(p + 1) = *p;
*q = x;
++L.length;
return OK;
}
```
3. 删除:删除顺序表的第i个元素,需要将第i+1个位置及其后面的元素依次前移一位,然后将表长减1。具体实现方法如下:
```
Status ListDelete(SqList &L, int i)
{
if (i < 1 || i > L.length) return ERROR;
ElemType* p = &(L.elem[i - 1]);
ElemType* q = L.elem + L.length - 1;
for (++p; p <= q; ++p) *(p - 1) = *p;
--L.length;
return OK;
}
```
4. 查找:查找顺序表中值为x的元素,需要依次遍历顺序表中的每个元素,直到找到值为x的元素或者遍历完整个顺序表。具体实现方法如下:
```
int LocateElem(SqList L, ElemType x)
{
int i;
ElemType* p = L.elem;
for (i = 1; i <= L.length; ++i, ++p)
if (*p == x) return i;
return 0;
}
```
5. 遍历:遍历顺序表中的每个元素,可以使用for循环或者while循环实现。具体实现方法如下:
```
void ListTraverse(SqList L)
{
int i;
ElemType* p = L.elem;
for (i = 1; i <= L.length; ++i, ++p) printf("%d ", *p);
printf("\n");
}
```
相关推荐
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)