以C结构体或C++的“类”代替“第2章中复杂数据类型”,实现“链式线性表”,编写下面6个接口函数:CreateList
时间: 2023-05-29 20:06:31 浏览: 83
输入语句-C++语法和结构体
、InsertList、DeleteList、ClearList、GetElem和LocateElem。
1. CreateList函数:创建一个空的链式线性表。
```c
typedef struct Node{
int data;
struct Node *next;
}Node;
typedef struct{
Node *head;
int length;
}List;
void CreateList(List *list){
list->head = (Node*)malloc(sizeof(Node));
list->head->next = NULL;
list->length = 0;
}
```
2. InsertList函数:在链式线性表的第i个位置插入元素e。
```c
int InsertList(List *list, int i, int e){
if(i < 1 || i > list->length + 1){
return 0;
}
Node *p = list->head;
for(int j = 1; j < i; j++){
p = p->next;
}
Node *new_node = (Node*)malloc(sizeof(Node));
new_node->data = e;
new_node->next = p->next;
p->next = new_node;
list->length++;
return 1;
}
```
3. DeleteList函数:删除链式线性表的第i个位置的元素。
```c
int DeleteList(List *list, int i){
if(i < 1 || i > list->length){
return 0;
}
Node *p = list->head;
for(int j = 1; j < i; j++){
p = p->next;
}
Node *q = p->next;
p->next = q->next;
free(q);
list->length--;
return 1;
}
```
4. ClearList函数:清空链式线性表。
```c
void ClearList(List *list){
Node *p = list->head->next;
while(p){
Node *q = p->next;
free(p);
p = q;
}
list->head->next = NULL;
list->length = 0;
}
```
5. GetElem函数:返回链式线性表第i个位置的元素。
```c
int GetElem(List *list, int i){
if(i < 1 || i > list->length){
return 0;
}
Node *p = list->head->next;
for(int j = 1; j < i; j++){
p = p->next;
}
return p->data;
}
```
6. LocateElem函数:返回链式线性表中第一个与e相等的元素的位置,如果不存在返回0。
```c
int LocateElem(List *list, int e){
Node *p = list->head->next;
int i = 1;
while(p){
if(p->data == e){
return i;
}
p = p->next;
i++;
}
return 0;
}
```
阅读全文