数据结构顺序表的基本操作c语言编程
时间: 2023-06-26 12:04:04 浏览: 139
顺序表是一种线性表,它是用一组连续的存储单元来存储线性表的数据元素的。
常见的顺序表基本操作有:
1. 初始化操作
```c
void InitList(SqList *L)
{
L->length = 0;
}
```
2. 插入操作
```c
int ListInsert(SqList *L, int i, ElemType e)
{
int j;
if (i < 1 || i > L->length + 1) {
return ERROR;
}
if (L->length >= MAXSIZE) {
return ERROR;
}
for (j = L->length; j >= i; j--) {
L->data[j] = L->data[j-1];
}
L->data[i-1] = e;
L->length++;
return OK;
}
```
3. 删除操作
```c
int ListDelete(SqList *L, int i, ElemType *e)
{
int j;
if (i < 1 || i > L->length) {
return ERROR;
}
*e = L->data[i-1];
for (j = i; j < L->length; j++) {
L->data[j-1] = L->data[j];
}
L->length--;
return OK;
}
```
4. 查找操作
```c
int LocateElem(SqList L, ElemType e)
{
int i;
for (i = 0; i < L.length; i++) {
if (L.data[i] == e) {
return i+1;
}
}
return 0;
}
```
5. 获取表长
```c
int ListLength(SqList L)
{
return L.length;
}
```
需要注意的是,这里的 `MAXSIZE` 是预定义的顺序表最大长度。`ElemType` 可以根据实际需要进行定义。
完整的代码如下:
```c
#define MAXSIZE 100
typedef int ElemType;
typedef struct {
ElemType data[MAXSIZE];
int length;
} SqList;
void InitList(SqList *L)
{
L->length = 0;
}
int ListInsert(SqList *L, int i, ElemType e)
{
int j;
if (i < 1 || i > L->length + 1) {
return ERROR;
}
if (L->length >= MAXSIZE) {
return ERROR;
}
for (j = L->length; j >= i; j--) {
L->data[j] = L->data[j-1];
}
L->data[i-1] = e;
L->length++;
return OK;
}
int ListDelete(SqList *L, int i, ElemType *e)
{
int j;
if (i < 1 || i > L->length) {
return ERROR;
}
*e = L->data[i-1];
for (j = i; j < L->length; j++) {
L->data[j-1] = L->data[j];
}
L->length--;
return OK;
}
int LocateElem(SqList L, ElemType e)
{
int i;
for (i = 0; i < L.length; i++) {
if (L.data[i] == e) {
return i+1;
}
}
return 0;
}
int ListLength(SqList L)
{
return L.length;
}
```
阅读全文