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を入力する.テーマに基づいてアルゴリズムを作成してください.
しゅつりょく
サンプル入力
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; }