关于比较算法的一个问题
设A,B均为顺序表,如A={9,6,8,7,3,2,5},B={9,6,8,7,4,12,20,58}
若a[i]>b[i],则A>B,否则B>A,下面是我的算法,请帮我看看我的比较函数该如何修改
/* Note:Your choice is C IDE */
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define NULL 0
/*顺序表的定义*/
#define listsize 10
typedef struct SequeueList{
int data[listsize]; /*在内存中开辟连续的存储单元*/
int length; /*length始终指向数组的尾部来表示数据的个数*/
}sqlist;
sqlist *la;
sqlist *Ainitlist(){
sqlist *l;
la=(sqlist*)malloc(sizeof(sqlist)); /*顺序表的建立*/
la->length=-1;/*顺序表的长度置-1*/
return la; /*建立成功后返回顺序表的首地址*/
}
sqlist *lb;
sqlist *Binitlist(){
sqlist *lb;
lb=(sqlist*)malloc(sizeof(sqlist)); /*顺序表的建立*/
lb->length=-1;/*顺序表的长度置-1*/
return lb; /*建立成功后返回顺序表的首地址*/
}
sqlist *ListCompare(sqlist *la,sqlist *lb){
int i;
for(i=1;i<=la->length&&i<=lb->length;i++){
if(la->data[i]!=lb->data[i])
return la->data[i]>lb->data[i]?1:-1;
else if(la->length==lb->length)
return 0;
else
return la->length>lb->length?1:-1;
}
}
void main() {
int i=0,j; /***i为插入元素的位置***/
clrscr();
la=Ainitlist();
printf("please input a number to the list:\n");
scanf("%d",&la->data[0]);
la->length++;
for(i=1;la->data[i-1]!=0;i++) {
printf("please input a number to the list again:\n");
scanf("%d",&la->data[i]);
la->length++;
}
printf("\nthe origin string numbers is:\n");
for(j=0;j<la->length+1;j++)
printf("%4d",la->data);
printf("\n");
printf("all the doing has been over!\n");
lb=Binitlist();
printf("please input a number to the list:\n");
scanf("%d",&lb->data[0]);
lb->length++;
for(i=1;lb->data[i-1]!=0;i++) {
printf("please input a number to the list again:\n");
scanf("%d",&lb->data[i]);
lb->length++;
}
printf("\nthe origin string numbers is:\n");
for(j=0;j<lb->length+1;j++)
printf("%4d",lb->data[j]);
printf("\n");
printf("all the doing has been over!\n");
ListCompare(la,lb);
}