大家好,能帮我看一个算法吗?

来源:百度知道 编辑:UC知道 时间:2024/06/27 06:39:33
定义一个指向字符串的指针1不等数组,用一个函数完成n不等长字符串输入,根据实际输入的字符串长度用new运算符分配存储空间,依次使指针数组中的元素指向每一个输入的字符串。设计一个完成n个字符串排序的函数(在排序的过程中,要求只交换指向字符串的指针值,不交换字符串)。在主函数中实现将排序后的字符串输出。
下面是我写的算法,大家帮我看看有哪些不对。
#include <iostream>
#include <cstring>
using namespace std;

void paixu(char **p,int n)
{char *h;
for(int l=1;l<n;l++)
for(int k=0;k<n-l;k++)
if(strcmp(p[k],p[k+1])>0)
{h=p[k];p[k]=p[k+1];p[k+1]=h;}
}

int main(void)
{int n,m;
cout<<"请输入需排序的单词个数:";
cin>>n;
char **p;
p=new char*[n];
if(!p){cout<<"未申请到动态内存!"; return 1;}
for(int i=0;i<n;i++)
{cout<<"请输入第"<<i+1<<"字符串:";
p[i]=new char[m];
if(!*p[i]){cout<<"未申请到动态内存!"; return 1;}
cin>>*p[i];
}
void paixu(char **p,int n);
cout<<"排序后顺序为:";
for(int z=0;z<n;z++)
co

接分,
#include <iostream>
#include <cstring>
using namespace std;

void paixu(char **p,int n)
{
char *h;
for(int l=1;l<n;l++)
for(int k=0;k<n-l;k++)
if(strcmp(p[k],p[k+1])>0)
{h=p[k];p[k]=p[k+1];p[k+1]=h;}
}

int main(void)
{
int n,m;

cout<<"请输入需排序的单词个数:";
cin>>n;

cout<<"请输入单词最大长度:";
cin>>m;

char **p;
p=new char*[n];
if(!p){cout<<"未申请到动态内存!"; return 1;}

for(int i=0;i<n;i++)
{
cout<<"请输入第"<<i+1<<"字符串:";
p[i]=new char[m]; //m未初始化
if(!p[i]){cout<<"未申请到动态内存!"; return 1;}

cin>>p[i];
}
void paixu(char **p,int n);

paixu(p,n); //排序函数也没调用

cout<<"排序后顺序为:"<<endl;

for(int z=0;z<n;z