データ構造導論シリーズ①---リニアテーブルの基本予算:演算の挿入、削除、位置決め演算(実現コードを含む)


1、挿入演算
順序表の挿入予算は、順序表のi番目の要素の前に、新しい要素を挿入します.長さnの線形テーブルを長さn+1の直線テーブルに変更します.
実現コードは以下の通りです.

#include 
using namespace std;
typedef int DataType;
const int Maxsize = 8;
typedef struct
{
	DataType data[Maxsize];                       //       
	int length;                                   //        
}SeqList;                                         //       SeqList
SeqList L;										  //  L      

void InsertSeqlist(SeqList L, DataType x, int i)  //    :   X      L  i   
{
	if (L.length == Maxsize) cout << ("   ");  //            (   vs  C++     ,      C    ,c         exit("   "),           。
	if (i<1 || i>L.length + 1) cout << ("   ");//            ,     ,     L.lenth+1                  

	for (int j = L.length; j >= i; j--)           //for   i,j   :   j  ,   
		L.data[j] = L.data[j - 1];                // L       
	L.data[i - 1] = x;                            //    X
	L.length++;                                   //         , L    1
}

int main()
{
	SeqList L = { { 1,2,3,4,5,6,7 },8 };          //      
    InsertSeqlist(L,3,3};                         // 3        3   
}
2、削除演算
削除演算とは、線形表のi番目のデータ要素を削除し、長さnの線形表を長さn−1の線形表に変更することを意味します.
実現コードは以下の通りです.

#include 
using namespace std;
typedef int DataType;
const int Maxsize = 8;
void DeleteSeqLIst(SeqList L, int i)              //    :        i     
{
	if (i<1 || i>L.length)                        //        :       i<1 i>      , i         。
		cout << "    " << endl;               //      
	for (int j = i; j < L.length; j++)            // i       i-1
		L.data[j - 1] = L.data[j];                //    
	L.length--;
}

int main()
{
	SeqList L = { { 1,2,4,5,6,7,8 },8 };      //      
	DeleteSeqLIst(L,3 );                     //     L   3     
} 
3、位置決め演算
位置決め演算の機能は、線形表Lの値がxの結点番号に等しい最小値を検索し、xの結点が見つからない場合、結果0を返します.
実現コードは以下の通りです.

#include 
using namespace std;
typedef int DataType;
const int Maxsize = 8;
int LocateSeqlist(SeqList L, DataType x)          //    
{
	int i = 0;                                    //       ,      i 0
	while ((i < L.length) && (L.data[i] != x))    // i        i         x  :       x   
		i++;                                      //i+1
	if (i < L.length)                             //  i        
		return i + 1;                             //  x     
	else
		return 0;                                 //     x        0
}

int main()
{
	SeqList L = { { 1,2,4,5,6,7,8 },8 };         //                 
    int x = LocateSeqlist(L, 4);                 //    4           x
	cout << x << endl;                           //      
}