YTU 2989:シーケンステーブル基本演算(リニアテーブル)
4380 ワード
2989:シーケンステーブル基本演算(リニアテーブル)
時間制限:1 Sec
メモリ制限:128 MB
コミット:1
解決:1
タイトルの説明
シーケンステーブルの様々な基本演算(シーケンステーブルの要素タイプがcharであると仮定)を実現するプログラムを作成し、メイン関数が与えられているので、各方法を補足してください.
1、初期化順序表L;
2、尾挿法で元素a,b,c,d,eを順次挿入する.
3、出力順序表L;
4、出力順序テーブルLの長さ;
5、順序表が空かどうかを判断する.
6、出力順序表Lの3番目の要素;
7、出力要素aの位置;
8、4番目の要素の位置に要素fを挿入する.
9、出力順序表L;
10、Lの3番目の要素を削除する.
11、出力順序表L;
12、解放順序表L;
シーケンステーブルの定義は
typedef struct
{
ElemType data[SizeMax];
int length;
} SqList;
主関数:
int main()
{
SqList *L;
InitList(L);//初期化手順表
ElemType a,b,c,d,e;
scanf("%c %c %c %c %c%*c",&a,&b,&c,&d,&e);
Insert(L,a);
Insert(L,b);
Insert(L,c);
Insert(L,d);
Insert(L,e);//末尾挿入法で元素a,b,c,d,eを挿入する
Print(L);//出力順序表
PrintLength(L);//出力シーケンステーブル長
if(SqNull(L))
printf(「シーケンステーブルは空ではない」);
else printf(「シーケンステーブルが空」);//順序表が空かどうかを判断する
PrintData(L,3);//3番目の要素を出力する
printf(「要素aの位置:%d」,Find(L,a));//出力要素aの位置
ElemType f;
scanf("%c",&f);
Insertinto(L,4,f);//fを4番目の位置に挿入する
Print(L);//出力順序表
Delete(L,3);//3番目の要素の削除
Print(L);//出力順序表
free(L);//メモリの解放
return 0;
}
入力
第1行は5つの要素a,b,c,d,eを入力する.次に要素fを入力する.テーマに基づいてアルゴリズムを作成してください.
しゅつりょく
サンプル入力
サンプル出力
ヒント
C++でコンパイルして提出してください
幽谷に迷い込んだ鳥は、一人でこんな大きな天地を飛んでいるのに、自分がどこへ飛ぶべきか分からない......
時間制限:1 Sec
メモリ制限:128 MB
コミット:1
解決:1
タイトルの説明
シーケンステーブルの様々な基本演算(シーケンステーブルの要素タイプがcharであると仮定)を実現するプログラムを作成し、メイン関数が与えられているので、各方法を補足してください.
1、初期化順序表L;
2、尾挿法で元素a,b,c,d,eを順次挿入する.
3、出力順序表L;
4、出力順序テーブルLの長さ;
5、順序表が空かどうかを判断する.
6、出力順序表Lの3番目の要素;
7、出力要素aの位置;
8、4番目の要素の位置に要素fを挿入する.
9、出力順序表L;
10、Lの3番目の要素を削除する.
11、出力順序表L;
12、解放順序表L;
シーケンステーブルの定義は
typedef struct
{
ElemType data[SizeMax];
int length;
} SqList;
主関数:
int main()
{
SqList *L;
InitList(L);//初期化手順表
ElemType a,b,c,d,e;
scanf("%c %c %c %c %c%*c",&a,&b,&c,&d,&e);
Insert(L,a);
Insert(L,b);
Insert(L,c);
Insert(L,d);
Insert(L,e);//末尾挿入法で元素a,b,c,d,eを挿入する
Print(L);//出力順序表
PrintLength(L);//出力シーケンステーブル長
if(SqNull(L))
printf(「シーケンステーブルは空ではない」);
else printf(「シーケンステーブルが空」);//順序表が空かどうかを判断する
PrintData(L,3);//3番目の要素を出力する
printf(「要素aの位置:%d」,Find(L,a));//出力要素aの位置
ElemType f;
scanf("%c",&f);
Insertinto(L,4,f);//fを4番目の位置に挿入する
Print(L);//出力順序表
Delete(L,3);//3番目の要素の削除
Print(L);//出力順序表
free(L);//メモリの解放
return 0;
}
入力
第1行は5つの要素a,b,c,d,eを入力する.次に要素fを入力する.テーマに基づいてアルゴリズムを作成してください.
しゅつりょく
サンプル入力
1 2 3 4 5
6
サンプル出力
1 2 3 4 5
5
3
a :1
1 2 3 6 4 5
1 2 6 4 5
ヒント
C++でコンパイルして提出してください
幽谷に迷い込んだ鳥は、一人でこんな大きな天地を飛んでいるのに、自分がどこへ飛ぶべきか分からない......
#include <stdio.h>
#include <stdlib.h>
#define SizeMax 10
typedef char ElemType;
typedef struct
{
ElemType data[SizeMax];
int length;
} SqList;
void InitList(SqList *&L)
{
L=(SqList*)malloc(sizeof(SqList));
L->length=0;
}
void Insert(SqList *&L,ElemType n)
{
L->data[L->length]=n;
L->length++;
}
void Print(SqList *L)
{
for(int i=0; i<L->length; i++)
printf(i!=L->length-1?"%c ":"%c
",L->data[i]);
}
void PrintLength(SqList *L)
{
printf("%d
",L->length);
}
bool SqNull(SqList *L)
{
if(L->length)return 1;
return 0;
}
void PrintData(SqList *L,int n)
{
if(L->length<n)return;
printf("%c
",L->data[n-1]);
}
int Find(SqList *L,ElemType a)
{
for(int i=0; i<L->length; i++)
if(L->data[i]==a)return i+1;
return 0;
}
void Insertinto(SqList *&L,int n,ElemType f)
{
for(int i=L->length; i>=n; i--)
L->data[i]=L->data[i-1];
L->data[n-1]=f;
L->length++;
}
void Delete(SqList *&L,int n)
{
for(int i=n-1; i<L->length-1; i++)
L->data[i]=L->data[i+1];
L->length--;
}
int main()
{
SqList *L;
InitList(L); //
ElemType a,b,c,d,e;
scanf("%c %c %c %c %c%*c",&a,&b,&c,&d,&e);
Insert(L,a);
Insert(L,b);
Insert(L,c);
Insert(L,d);
Insert(L,e); // a,b,c,d,e
Print(L); //
PrintLength(L); //
if(SqNull(L))
printf("
");
else printf("
"); //
PrintData(L,3); //
printf(" a :%d
",Find(L,a)); // a
ElemType f;
scanf("%c",&f);
Insertinto(L,4,f); // f
Print(L); //
Delete(L,3); //
Print(L); //
free(L); //
return 0;
}