데이터 구조 실험 2 스 택 (문자열 의 중심 대칭 여 부 를 판단)
11154 단어 데이터 구조
//seqstack.h
// , node( ),linklist( ),seqstack( )
#include
using namespace std;
template<class T>
struct node //node
{
T data;
node * next;
};
template<class T> //linklist
class linklist
{
private:
node * first; //
node * p;
public:
linklist(); //
linklist(T a[],int n); // , n
~linklist(){} //
int length(); //
T get(int i); // i
int locate(T x); // x
void insert(int i,T x); // i x
T Delete(int i); // i
void printlist(); //
};
template<class T>
linklist::linklist() //
{
first=new node;
p= new node;
first->next=NULL;
p=first->next;
}
template<class T>
linklist::linklist(T a[],int n)// , n
{
node *s;
first=new node;
p= new node;
first->next=NULL;
for(int i=0;inew node;
s->data=a[i];
s->next=first->next;
first->next=s;
}
}
template<class T>
int linklist::length()//
{
int count=0;
p=first->next;
while(p!=NULL)
{
p=p->next;
count++;
}
return count;
}
template<class T>
T linklist::get(int i)// i
{
int count=1;
p=first->next;
while(p!=NULL&&countnext;
count ++;
}
return p->data;
}
template<class T>
int linklist::locate(T x)// x
{
int count=1;
p=first->next;
while(p!=NULL)
{
if(p->data==x)return count;
p=p->next;
count++;
}
return 0;
}
template<class T> // i x
void linklist::insert(int i,T x)
{
int count=0;
p=first;
while(p!=NULL&&count1)
{
p=p->next;
count++;
}
s=new node;
s->data=x;
s->next=p->next;
p->next=s;
}
template<class T> // i
T linklist::Delete(int i)
{
p=first;
int count=0;
while(p!=NULL&&count1)
{
p=p->next;
count++;
}
q=new node;int x;
q=p->next;
x=q->data;
p->next=q->next;
delete q;
return x;
}
template<class T> //
void linklist::printlist()
{
p=first->next;
while(p!=NULL)
{
cout<data;
p=p->next;
}
}
const int size=10; //size
template<class T>
class seqstack //seqstack
{
private:
T data[size];
int top;
public:
seqstack(){top=-1;}
~seqstack(){}
void push(T x); //
T pop(); //
int hui(T a[],int n); //
int dui(linklist a); //
};
template<class T>
void seqstack::push(T x) //
{
data[++top]=x;
}
template<class T>
T seqstack::pop() //
{
T x;
x=data[top--];
return x;
}
template<class T>
int seqstack::hui(T a[],int n) //
{
for(int i=0;i2;i++)
{push(a[i]);}
for(int j=0;j2;j++)
{if(pop()!=a[n/2+1+j])return 0;}
return 1;
}
template<class T>
int seqstack::dui(linklist a) //
{
int n=a.length();
for(int i=1;i<=n/2;i++)
{push(a.get(i));}
for(int j=1;j<=n/2;j++)
{if(pop()!=a.get(n-n/2+j))return 0;}
return 1;
}
//main.cpp
#include
#include"seqstack.h"
using namespace std;
int main()
{
char test[10]="xxyyxx"; //
seqstack<char> m; //
linklist<char> a(test,6); //
int b;
b=m.dui(a); //
if(b==1)cout<" "<//
else cout<" "<return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.