注册 登录
编程论坛 VC++/MFC

求助帖~~关于数据结构的一个程序调试问题

chenjiajun 发布于 2010-10-19 01:00, 443 次点击
小弟刚学数据结构,在调试程序的时候出了一些问题,输出的时候是乱码~~~求指点
题意为:以第一个元素为分界线,将所有小于它的元素移到该元素的前面,将所有大于它的元素移到该元素后面
#include <stdio.h>
#include <malloc.h>
#include <iostream>
using namespace std;
#define maxsize 50
typedef int ElemType;
typedef struct
{
    ElemType data[maxsize];
    int length;
}SqList;
void CreateList(SqList *&L,ElemType a[],int n)
{
    int i;
    L=(SqList *)malloc(sizeof(SqList));
    for(i=0;i<n;i++)
        L->data[i]=a[i];
    L->length=n;
}
void InitList(SqList *&L)
{
    L=(SqList *)malloc(sizeof(SqList));
    L->length=0;
}
void movel(SqList *&L)
{
    int i=0;
    int j;
    j=L->length-1;
    ElemType pivot=L->data[0];
    ElemType tmp;
    while(i!=j)
    {
        while(j>i&&L->data[j]>pivot)
            j--;
        while(i<j&&L->data[i]<pivot)
            i++;
        if(i<j)
        {
            tmp=L->data[i];
            L->data[i]=L->data[j];
            L->data[j]=tmp;
        }
    }
}
int ListEmpty(SqList *L)
{
    return(L->length==0);
}
void DispList(SqList *L)
{
    int i;
    if(ListEmpty(L))
        return;
    for(i=0;i<L->length;i++)
        printf("%c",L->data[i]);
    printf("\n");
}
void main()
{
    SqList *ha;
    InitList(ha);
    ElemType a[50];
    int i,n;
    cout<<"请输入一个n=";
    cin>>n;
    for(i=0;i<n;i++)
        cin>>a[i];
    CreateList(ha,a,n);
    movel(ha);
    DispList(ha);
}
   谢谢了
3 回复
#2
cnfarer2010-10-19 10:13
这要看你用什么编译器!(TC3出现乱码正常)
#3
m21wo2010-10-19 18:04
程序代码:
#include <stdio.h>
#include <malloc.h>
#include <iostream>
using namespace std;
#define maxsize 50
typedef int ElemType;
typedef struct
{
    ElemType data[maxsize];
    int length;
}SqList;
void CreateList(SqList *&L,ElemType a[],int n)
{
    int i;
    int m;
    L=(SqList *)malloc(sizeof(SqList));
    for(i=0;i<n;i++)
       m=L->data[i]=a[i];
    L->length=n;
}
void InitList(SqList *&L)
{
    L=(SqList *)malloc(sizeof(SqList));
    L->length=0;
}
void movel(SqList *&L)
{
    int i=0;
    int j;
    j=L->length-1;
    ElemType pivot=L->data[0];
    ElemType tmp;
    while(i!=j)
    {
        while(j>i&&L->data[j]>pivot)
            j--;
        while(i<j&&L->data[i]<pivot)
            i++;
        if(i<j)
        {
            tmp=L->data[i];
            L->data[i]=L->data[j];
            L->data[j]=tmp;
        }
    }
}
int ListEmpty(SqList *L)
{
    return(L->length==0);
}
void DispList(SqList *L)
{
    int i;
    if(ListEmpty(L))
        return;
    for(i=0;i<L->length;i++)
        printf("%d",L->data[i]);                 // 把c改为d就好了!
    printf("\n");
}
void main()
{
    SqList *ha;
    InitList(ha);
    ElemType a[50];
    int i,n;
    cout<<"请输入一个n=";
    cin>>n;
    for(i=0;i<n;i++)
        cin>>a[i];
    CreateList(ha,a,n);
    movel(ha);
    DispList(ha);
}

这是粗心!!
#4
chenjiajun2010-10-19 22:18
呵呵~~~我刚接触数据结构~~~谢谢楼上的讲解
1