データ構造-順序線形表の基本動作を実現します.


順序格納構造:利点:  1、ランダムアクセス(時間複雑度はO(1));  2、表の要素間の論理関係を表すために追加の記憶空間を追加する必要はない.短所:  1、挿入、削除操作は大量の元素を移動する必要があり、効率が低い(時間複雑度はO(n))).  2、表の長さは分かりにくいです.
一、リニアテーブルの定義
#include <stdio.h>
#include <stdlib.h>
#define LIST_SIZE 100

typedef struct _SeqList
{
	char *data;
	int length;//       
	int listsize;//     
}SeqList;
二、リニアテーブルの初期化
int list_init(SeqList *seqList)
{
	seqList->data = (char *)malloc(LIST_SIZE * sizeof(char));
	seqList->length = 0;
	seqList->listsize = LIST_SIZE;
	return 0;
}
三、リニアテーブルデータ挿入
int list_insert(SeqList *seqList, int i, char d)
{
	//           ,     
	char *p = seqList->data+(i-1);
	for (char *q = seqList->data+(seqList->length - 1); q >= p; q --)
	{
		*(p+1) = *p;
	}//i       
	*p = d;
	seqList->length++;
	return 0;
}
四、リニアテーブルデータ削除
int list_delete(SeqList *seqList, int i)
{
	char Data = seqList->data[i -1];
	char *q = seqList->data+(seqList->length - 1);
	for (char *p = seqList->data+(i-1); p < q; p ++)
	{
		*p = *(p + 1);
	}//i       
	seqList->length--;
	return Data;
}
五、リニアテーブルのデータ位置の確定
int list_elem(SeqList *seqList, char d)
{
	int i = 1;
	char *p = seqList->data;
	while(*p++!=d && i<=seqList->length)//     d         
		i++;
	if(i >= seqList->length)
		return 0;
	else
		return i;
}
六、主関数作成
int main()
{
	SeqList seqList;
	list_init(&seqList);
	for(int i = 1; i<=10; i++)
		list_insert(&seqList, i, i);//       
	printf("deletd_data: %d
",list_delete(&seqList, 3));// , printf("elem_data: %d
",list_elem(&seqList, 5));// , for(int i = 1; i<=5; i++)// printf("data%d: %d
", i, seqList.data[i-1]); return 0; }
注:以上のコードをコピーしてそのまま使用できます.コンパイルコマンドは、gcc seqlist.c-std=c 99-o seqlistです.    (seqlist.cはファイル名です)