本题要求实现带头结点的链式表操作集。 函数接口定义: List MakeEmpty(); Position Find( List L, ElementType X ); bool Insert( List L, ElementType X, Position P ); bool Delete( List L, Position P ); 其中List结构定义如下: typedef struct LNode *PtrToLNode; struct LNode { ElementType Data; PtrToLNode Next; }; typedef PtrToLNode Position; typedef PtrToLNode List; 各个操作函数的定义为: List MakeEmpty():创建并返回一个空的线性表; Position Find( List L, ElementType X ):返回线性表中X的位置。若找不到则返回ERROR; bool Insert( List L, ElementType X, Position P ):将X插入在位置P指向的结点之前,返回true。如果参数P指向非法位置,则打印“Wrong Position for Insertion”,返回false; bool Delete( List L, Position P ):将位置P的元素删除并返回true。若参数P指向非法位置,则打印“Wrong Position for Deletion”并返回false。
时间: 2023-04-12 20:00:20 浏览: 197
好的,我可以回答这个编程类的问题。以下是完整的lua closure factory代码:
function closureFactory()
local x = 0
return function()
x = x + 1
return x
end
end
这是一个闭包工厂函数,它返回一个闭包函数。闭包函数可以访问闭包工厂函数中定义的变量x,并且每次调用闭包函数时,x的值都会自增1。这个闭包函数可以用来生成一系列连续的整数。
相关问题
本题要求实现带头结点的链式表操作集。 函数接口定义: List MakeEmpty(); Position Find( List L, ElementType X ); bool Insert( List L, ElementType X, Position P ); bool Delete( List L, Position P );
链表是一种常用的数据结构,它由一系列节点组成,每个节点包含一个数据元素和指向下一个节点的指针。链表可以分为带头结点和不带头结点两种,其中带头结点的链表在实现上更为方便。
以下是带头结点的链表操作集的函数接口定义:
```c
typedef int ElementType;
typedef struct Node *PtrToNode;
struct Node {
ElementType Data;
PtrToNode Next;
};
typedef PtrToNode List;
typedef PtrToNode Position;
List MakeEmpty(); // 初始化一个带头结点的空链表
Position Find(List L, ElementType X); // 在链表L中查找值为X的节点,返回该节点的位置,若找不到则返回NULL
bool Insert(List L, ElementType X, Position P); // 在链表L中插入值为X的节点,插入位置为P的后面,若插入成功则返回true,否则返回false
bool Delete(List L, Position P); // 在链表L中删除位置为P的节点,若删除成功则返回true,否则返回false
```
下面是带头结点的链表操作集的实现:
```c
#include <stdio.h>
#include <stdlib.h>
typedef int ElementType;
typedef struct Node *PtrToNode;
struct Node {
ElementType Data;
PtrToNode Next;
};
typedef PtrToNode List;
typedef PtrToNode Position;
List MakeEmpty() {
List L = (List)malloc(sizeof(struct Node));
L->Next = NULL;
return L;
}
Position Find(List L, ElementType X) {
Position P = L->Next;
while (P != NULL && P->Data != X) {
P = P->Next;
}
return P;
}
bool Insert(List L, ElementType X, Position P) {
Position TmpCell = (Position)malloc(sizeof(struct Node));
TmpCell->Data = X;
TmpCell->Next = P->Next;
P->Next = TmpCell;
return true;
}
bool Delete(List L, Position P) {
Position Tmp;
if (P == NULL) {
return false;
}
Tmp = P->Next;
P->Next = Tmp->Next;
free(Tmp);
return true;
}
int main() {
List L = MakeEmpty();
Insert(L, 1, L);
Insert(L, 2, L->Next);
Insert(L, 3, L->Next);
Position P = Find(L, 2);
Delete(L, P);
P = Find(L, 3);
Delete(L, P);
P = Find(L, 1);
printf("%d\n", P->Data); // 输出1
free(L);
return 0;
}
```
本题要求实现顺序表的操作集。\n\n函数接口定义:\nlist makeempty(); \nposition find( list l, elementtype x );\nbool insert( list
这道题要求实现顺序表的操作集合。
函数接口定义如下:
list makeempty(); // 返回一个空的顺序表
position find(list l, elementtype x); // 在顺序表中查找元素x的位置,并返回位置
bool insert(list l, elementtype x, position p); // 在顺序表l的位置p处插入元素x
其中,list、position、elementtype是需要自行定义的类型,有多种实现方式,具体实现需根据需求而定。
阅读全文