需要分奇數偶數討論
前一半輸出放入棧中(用數組實現)
後一半繼續由指針遍歷
typedef struct Lnode {
char data;
struct Lnode* next;
}Lnode, *Linklist;
Linklist tail_insert(Linklist L) {//尾插法創建單鏈表
L = (Linklist)malloc(sizeof(Linklist));
L->next = NULL;
Lnode *p;
Lnode *r = L;
char x;
while (true) {
cin >> x;
if (x == 'q')break;
p = (Lnode*)malloc(sizeof(Lnode));
p->data = x;
r->next = p;
r = p;
}
r->next = NULL;
return L;
}
void print(Linklist L) {//打印鏈表
Lnode *p = L->next;
while (p)
{
cout << p->data << " ";
p = p->next;
}
}
void isduicheng(Linklist L, int n) {
vector<char> s(n / 2);
Lnode *p = L->next;
int i = 0, j = 0;
for (i; i < n / 2; i++) {
s[i] = p->data;
p = p->next;
}
i--;
if (n % 2 == 1) p = p->next;
for (j = i; j > 0; j--) {
if (p->data == s[j]) p = p->next;
else
{
cout << "不對稱";
break;
}
}
if (j == 0)cout << "對稱";
}
int main() {
int n;
cout << "打算創建多少個節點?"<<endl;
cin >> n;
Linklist L=NULL;
cout << "輸入字符串,q結束輸入" << endl;
L=tail_insert(L);
print(L);
isduicheng(L, n);
}