本关任务:编写一个函数实现链表的插入操作。 函数原型:status ListInsert(LinkList &L,int i,ElemType e) 功能说明:如果链表L不存在,返回INFEASIBLE;否则在链表L的第i个元素前插入新的元素e,插入成功返回OK,失败返回ERROR。
时间: 2024-03-01 09:52:34 浏览: 73
好的,我来为你编写一个实现链表插入操作的函数。
```c++
typedef int ElemType; // 定义链表数据类型
typedef struct LNode ElemType data; // 数据
struct LNode *next; // 指针域指向下一个结点
} LNode, *LinkList;
typedef enum {
OK = 1,
ERROR = 0,
INFEASIBLE = -1
} status;
status ListInsert(LinkList &L, int i, ElemType e) {
if (L == NULL) { // 如果链表不存在,返回INFEASIBLE
return INFEASIBLE;
}
if (i < 1) { // 如果插入位置不合法,返回ERROR
return ERROR;
}
LNode *p = L;
int j = 0;
while (p != NULL && j < i - 1) { // 找到插入位置的前一个结点
p = p->next;
j++;
}
if (p == NULL || j > i - 1) { // 如果插入位置不合法,返回ERROR
return ERROR;
}
LNode *q = new LNode; // 创建新结点
q->data = e;
q->next = p->next; // 新结点指向插入位置的后一个结点
p->next = q; // 插入位置的前一个结点指向新结点
return OK;
}
```
这个函数的实现比较常见,首先判断链表是否存在,如果不存在,返回INFEASIBLE;其次判断插入位置是否合法,如果不合法,返回ERROR;最后找到插入位置的前一个结点,创建新结点并插入即可。
阅读全文