データ構造:線形テーブルが中心対称かどうかを判断する


テーマ:アルゴリズムを書いて、単鎖表のデータが中心対称かどうかを判断します
思想:単鎖表はその記憶構造の特徴のため、直接中心対称かどうかを判断するのに便利ではないので、単鎖表の中の要素を先に1つの配列に保存して、2つのポインタの方法を採用して1つの頭と尾でスキャンして、空間で時間を変えることができます.
コードの表示:
#include 
#include 
#include 

/*
 *   :     ,              
 * */
typedef struct LinkNode
{
    int data;
    struct LinkNode *next;
}LinkNode,*LinkList;

void InitLinkList(LinkList &L)
{
    L = (LinkList)malloc(sizeof(LinkNode));
    L->next = NULL;
}

void InsertLinkList(LinkList &L,int x)
{
    LinkList p;
    p = (LinkList)malloc(sizeof(LinkNode));
    p->data = x;
    p->next = L->next;
    L->next = p;
}

void Print(LinkList L)
{
    printf("        :");
    while(L->next!=NULL)
    {
        printf("%d ",L->next->data);
        L = L->next;
    }
    printf("
"); } int GetLength(LinkList L) { int length = 0; while(L->next!=NULL) { length++; L = L->next; } return length; } int Judge(int *arr,int length) { int p = 0; int q = length-1; while(q>p) { if(arr[p]!=arr[q]) { return 0; } p++; q--; } return 1; } void Dispose() { LinkList L; InitLinkList(L); int n; printf(" :"); scanf("%d",&n); int data; printf(" :"); for(int i=0;inext->data; L = L->next; } if(Judge(arr,length)) { printf(" !"); } else { printf(" !"); } } int main() { Dispose(); return 0; }