程序:比较a与b;vc编译器没有提示错误,但不能运行~~
//设A=(a1,a2...,an)和B=(b1,b2...,bn)均为顺序表,比较A与B大小#include <stdio.h>
#include <stdlib.h>
#define LIST_INIT_SIZE 100
#define OVERFLOW 0
#define LEN sizeof(Sqlist)
typedef struct {
char elem[LIST_INIT_SIZE];
int length;
int listsize;
}Sqlist;
void InitList_Sq(Sqlist *L) {
/*构造一个空的线性表*/
L=(Sqlist*)malloc(LEN);
if (!L) exit(OVERFLOW);
L->length = 0;
L->listsize = LIST_INIT_SIZE;
} /*InitList_Sq*/
void Comparison_Sq1(int i, Sqlist *a, Sqlist *b) {
/*比较a与b大小,其中a与b的元素数目相同*/
int k;
for(k=0;k<=i;k++) {
if (a->elem[k] > b->elem[k]) {
printf("A>B");break;}//if
else if (a->elem[k] < b->elem[k]) {
printf("A<B");break;}//else if
else if (a->elem[k] == b->elem[k]) {
if (i==k) printf("A=B");
else return; }//else
}//for
} /*Comparison_Sq1*/
void Comparison_Sq2(int i, int j, Sqlist *a, Sqlist *b) {
/*比较a与b大小,其中a与b的元素数目不相同*/
int k;
if(i>j)
for(k=0;k<=j;k++) {
if (a->elem[k] > b->elem[k]) {
printf("A>B");break;}//if
else if (a->elem[k] < b->elem[k]) {
printf("A<B");break;}//else if
else if (a->elem[k] == b->elem[k]) {
if (k==j) printf("A>B");
else return;}//else
}//for
else if(i<j)
for(k=0;k<=i;k++) {
if (a->elem[k] > b->elem[k]) {
printf("A>B");}//if
else if (a->elem[k] < b->elem[k]) {
printf("A<B");}//else if
else if (a->elem[k] == b->elem[k]) {
if (k==i) printf("A>B");
else return;}//else
}//for
} /*Comparison_Sq2*/
void main()
{
Sqlist *A=NULL, *B=NULL;
int i=0,j=0;
char flag;
InitList_Sq(A); //构造空表A
InitList_Sq(B); //构造空表B
printf("请输入A的字母序列:\n");
while(scanf("%c",&flag),A->listsize>=i) {
if (flag == '\n') break;
else {
A->elem[i]=flag;
flag = NULL;
A->length++;
i++; }}
printf("请输入B的字母序列:\n");
while(scanf("%c",&flag),B->listsize>=j) {
if (flag == '\n') break;
else {
B->elem[j]=flag;
flag = NULL;
B->length++;
j++;} }
/*比较:*/
if (i==j) Comparison_Sq1(i, A, B);
else Comparison_Sq2(i, j, A, B);
free(A);/*释放A*/
free(B);/*释放B*/
}
vc编译器没有提示错误,但不能运行~~
莱鸟向高手请教为什么???
谢谢!!