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