第6课-线性表的相关操作
问题:
线性表只是一个单纯的概念吗?
如何在程序中表达和使用一个线性表?
1. 线性表的操作
l 创建线性表。
l 销毁线性表。
l 清空线性表。
l 将元素插入线性表。
l 将元素从线性表中删除。
l 获取线性表中某个位置的元素。
l 获取线性表的长度。
2. 线性表操作的实现
(1) 线性表在程序中表现为一种特殊的数据类型。
(2) 线性表的操作在程序中的表现为一组。
3. 用C语言来描述线性表
2-1.h文件
#ifndef _EG_2_1_H_
#define _EG_2_1_H_
typedef void List;
typedef void ListNode;
/*
该方法用于创建并且返回一个空的线性表
*/
List* List_Create();
/*
该方法用于销毁一个线性表list
*/
void List_Destroy(List* list);
/*
该方法用于将一个线性表list中的所有元素清空
使得线性表回到创建时的初始状态
*/
void List_Clear(List* list);
/*
该方法用于返回一个线性表list中的所有元素个数
*/
int List_Length(List* list);
/*
该方法用于向一个线性表list的pos位置处插入新元素node
返回值为1表示插入成功,0表示插入失败
*/
int List_Insert(List* list, ListNode* node, int pos);
/*
该方法用于获取一个线性表list的pos位置处的元素
返回值为pos位置处的元素,NULL表示获取失败
*/
ListNode* List_Get(List* list, int pos);
/*
该方法用于删除一个线性表list的pos位置处的元素
返回值为被删除的元素,NULL表示删除失败
*/
ListNode* List_Delete(List* list, int pos);
#endif
2-1.c
#include <stdio.h>
#include "2-1.h"
List* List_Create()
{
return NULL;
}
void List_Destroy(List* list)
{
}
void List_Clear(List* list)
{
}
int List_Length(List* list)
{
return 0;
}
int List_Insert(List* list, ListNode* node, int pos)
{
return 0;
}
ListNode* List_Get(List* list, int pos)
{
return NULL;
}
ListNode* List_Delete(List* list, int pos)
{
return NULL;
}
小结:
l 线性表在程序中表现为一种特殊的数据类型。
l 线性表的操作则表现为一组相关的。
问题:
(1)线性表的各个函数如何实现呢?
(2)有几种线性的实现方式呢?
(3)每种实现方式的优缺点是什么呢?