请看下我数据结构的代码(在VC++实现的) 为什么我合并表以后,总是多出几个元素?

[复制链接]
查看11 | 回复1 | 2011-2-13 17:48:21 | 显示全部楼层 |阅读模式
#include "stdio.h"
#include "malloc.h"
#define LIST_INIT_SIZE 100
#define LISTINCREMENT10
typedef int Status;
typedef int ElemType;
typedef struct{
ElemType *elem;
int
length;
int
listsize;
}SqList;
ListInit(SqList &L){
/*初始化顺序表*/
L.elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
L.length=0;
L.listsize=LIST_INIT_SIZE;
return 1;
}
ListInsert(SqList &L,int i,ElemType e){
/*在顺序表里插入元素*/
ElemType *p,*q;
if(iL.length+1) {printf("输入的位置不合法!\n");return 0;}
if(L.length==L.listsize) {
L.elem =(ElemType *)realloc(L.elem,sizeof(ElemType)*10+L.listsize);
L.listsize+=sizeof(ElemType)*10;
}
q=&L.elem[i-1];

for(p=&(L.elem[L.length-1]);p>=q;p--) *(p+1)=*p;
*q=e;
L.length++;
return 1;
}
Status ListDelete(SqList &L,int i){
/*删除顺序表中的一个元素*/
if(iL.length+1) {printf("删除的位置不合法!\n");return 0;}

ElemType *q,*p;

q=&(L.elem[i-1]);
for(p=(L.elem+L.length-1);qL.length) {

return 0;
}
e=L.elem[i-1];
return 1;
}
Status LocateElem(SqList &L,ElemType e){
/*判断顺序表中是否有某个元素*/
int i;
for(i=0;i<L.length;i++)
if(L.elem==e)

return 1;
else

return 0;
}
void ListPrint(SqList &L){
/*打印顺序表所以元素*/
int i;
printf("此表有元素:\n");
for(i=0;i<L.length;i++)
printf("\t %d \n",L.elem);
}
void unio(SqList &L1,SqList L2,ElemType &e){
/*合并两张顺序表*/
int j;
for(j=0;j<ListLength(L2);j++){

GetElem(L2,j,e);

if(!LocateElem(L1,e))

ListInsert(L1,L1.length++,e);
}
}
void main(){SqList a1,a2;

ElemType EE;
ListInit(a1);
ListInit(a2);
ListInsert(a1,1,3);
ListInsert(a1,1,2);
ListInsert(a1,1,1);
ListInsert(a2,1,30);
ListInsert(a2,1,20);
ListInsert(a2,1,10);
printf("a1表:\n");
ListPrint(a1);
printf("a2表:\n");
ListPrint(a2);
printf("两表合并为a1:\n");
unio(a1,a2,EE);
ListPrint(a1);
}

回复

使用道具 举报

千问 | 2011-2-13 17:48:21 | 显示全部楼层
void unio(SqList &L1,SqList L2,ElemType &e){
/*合并两张顺序表*/int j;for(j=0;j<ListLength(L2);j++){
GetElem(L2,j,e);
if(!LocateElem(L1,e))
ListInsert(L1,L1.length,e); 无++}}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行