Em muốn tìm chữ cái xuất hiện ít nhất trong dslk bằng hàm Findleast, nhưng em ko biết tại sao giá trị của dp[] lại không tăng lên vậy ạ, em cảm ơn mọi người.
#include <iostream>
using namespace std;
struct Node
{
char info;
Node *pNext;
Node *pPrev;
};
struct DList
{
Node *pHead;
Node *pTail;
};
void Init(DList &L)
{
L.pHead = L.pTail = NULL;
}
Node *GetNode(char x)
{
Node *p = new Node;
p->info = x;
p->pNext = p->pPrev = NULL;
return p;
}
void AddHead(DList &L, char x)
{
Node *newele = GetNode(x);
if (L.pHead == NULL)
{
L.pHead = L.pTail = newele;
}
else
{
newele->pNext = L.pHead;
L.pHead->pPrev = newele;
L.pHead = newele;
}
}
void AddTail(DList &L, char x)
{
Node *newele = GetNode(x);
if (L.pTail == NULL)
{
L.pHead = L.pTail = newele;
}
else
{
L.pTail->pNext = newele;
newele->pPrev = L.pTail;
L.pTail = newele;
}
}
void CreateDList(DList &L, int n)
{
char a;
for (int i = 1; i <= n; i++)
{
cin >> a;
AddTail(L, a);
}
}
void PrintDList(DList L)
{
Node *p = L.pHead;
while (p != NULL)
{
cout << p->info << " ";
p = p->pNext;
}
cout << endl;
}
void FindLeast(DList L)
{
int i = 0;
int dp[100] = {0};
for (Node *temp = L.pHead; temp != NULL; temp = temp->pNext)
{
for (Node *temp2 = temp->pNext; temp2 != NULL; temp2 = temp2->pNext)
{
if (temp->info == temp2->info)
dp[i]++;
}
i++;
}
for (int j = 0; j < i; j++)
{
cout << dp[i] << " ";
}
}
int main()
{
DList L;
Init(L);
int n;
cin >> n;
CreateDList(L, n);
PrintDList(L);
FindLeast(L);
}