求助
大二學習資料結構取堆疊,代碼是將一個堆疊里的資料按從小到大排序,然后堆疊的最后一個資料沒法進行排序
#include<iostream>
#include<stdlib.h>
using namespace std;
struct LinkstNode
{
int data;
LinkstNode *next;
};
void InitStack(LinkstNode *&s)
{
s=(LinkstNode *)malloc(sizeof(LinkstNode));
s->next=NULL;
}
void Push(LinkstNode *&s,int a[],int n)
{
LinkstNode *r;
s=(LinkstNode *)malloc(sizeof(LinkstNode));
s->next=NULL;
for(int i=0;i<n;i++)
{
r=(LinkstNode *)malloc(sizeof(LinkstNode));
r->data=https://bbs.csdn.net/topics/a[i];
r->next=s->next;
s->next=r;
}
}
void Push(LinkstNode *&s,int e)
{
LinkstNode *r;
s=(LinkstNode *)malloc(sizeof(LinkstNode));
s->next=NULL;
r=(LinkstNode *)malloc(sizeof(LinkstNode));
r->data=https://bbs.csdn.net/topics/e;
r->next=s->next;
s->next=r;
}
void Locate(LinkstNode *&s,int e)
{
LinkstNode *l;
s=(LinkstNode *)malloc(sizeof(LinkstNode));
s->next=NULL;
l=(LinkstNode *)malloc(sizeof(LinkstNode));
l->data=https://bbs.csdn.net/topics/e;
l->next=s->next;
s->next=l;
}
void DispStack(LinkstNode *s,int n)
{
int a[n];
for(int i=0;i<n;i++)
{
a[i]=s->next->data;
s=s->next;
}
cout<<"出堆疊的順序"<<endl;
for(int i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
}
bool pop(LinkstNode *s,int &e)
{
LinkstNode *p;
if(s->next==NULL)
return false;
p=s->next;
e=p->data;
s->next=p->next;
free(p);
return true;
}
int gettop(LinkstNode *s)
{
LinkstNode *p;
int e;
if(s->next==NULL)
return false;
e=s->next->data;
return e;
}
void paixu(LinkstNode *s)
{
LinkstNode *m;
InitStack(m);
int temp1;
int temp2;
pop(s,temp1);
cout<<"取出s堆疊中的元素:"<<temp1<<"放入m堆疊中"<<endl;
Push(m,temp1);
while(s->next!=NULL)
{
pop(s,temp1);
cout<<"取出s堆疊中的元素:"<<temp1<<endl;
if(temp1>gettop(m))
{
cout<<"因為"<<temp1<<">"<<gettop(m)<<"所以將"<<temp1<<"放入m堆疊"<<endl;
Locate(m,temp1);
cout<<"取出m的第一個元素:"<<gettop(m)<<endl;
}
if(temp1<gettop(m))
{
pop(m,temp2);
cout<<"因為"<<temp1<<"<"<<temp2<<"所以將"<<temp2<<"取出"<<endl;
Locate(s,temp2);
cout<<"將"<<s->next->data<<"放回s堆疊"<<endl;
Locate(m,temp1);
cout<<"再將"<<m->next->data<<"放入m堆疊"<<endl;
}
}
}
main()
{
int a[4]={2,4,5,1};
int n=4;
LinkstNode *s;
InitStack(s);
Push(s,a,n);
DispStack(s,n);
paixu(s);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/218853.html
標籤:C++ 語言
