线性表
线性表的定义和基本操作:n个相同的数据类型、有限序列
————————————————————
编号 |书名 |出版社
————————————————————
1 |高等数学 |清华大学出版
————————————————————
2 |数据结构 |清华大学出版社
————————————————————
.... |......... |..........................
————————————————————
n |XXXXX |XXXXXXXXXXX
四个特点:
1.个数有限。
2.排序成先后顺序。
3.单个元素。
4.每个元素有相同大小的存储空间。
a1----->a2------>a3-------->a4----->....------>an
L=(a1,a2,....,an),a1是头,an是尾部。线性表的逻辑特性
中间元素仅有一个前驱和一个后继。
注意:线性表是一种逻辑结构,表示元素中一对一的相邻关系,顺序表和链表指存储结构。
// SqList.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <windows.h>
#define MAXSIZE 50
#define ElemType int<span style="white-space:pre"> </span>//此时默认地将数据类型定义为int 型
typedef struct{
ElemType data[MAXSIZE];
int length;
}SqList;<span style="white-space:pre"> </span>//得到结构体,此时结构体存储data和长度两个元素
void InitList(SqList &L)
{
L.length = 0;<span style="white-space:pre"> </span>//初始化 此时的未定义长度定为0
}
int Length(SqList L)
{
return L.length;<span style="white-space:pre"> </span>// 返回值为整个表的长度
}
bool ListInsert(SqList &L, int i, ElemType e)
{
int j;
if (i<1 || i>L.length + 1) return false;
if (L.length >= MAXSIZE) return false;
for (j = L.length; j>=i; j--)
{
L.data[j] = L.data[j - 1];
}
L.data[j - 1] = e;
L.length++;
return true;
}
bool LietDelete(SqList &L, int i, ElemType &e)
{
int j;
if (i<1 || i>L.length + 1) return false;
if (L.length >= MAXSIZE) return false;
e = L.data[i - 1];
for (j = i; j < L.length; j++)
{
L.data[j - 1] = L.data[j];
}
L.length--;
return true;
}
int _tmain(int argc, _TCHAR* argv[])
{
system("pause");
return 0;
}