函数用c语言实现顺序表 用c语言编写顺序表( 四 )


for(i = 0; iA-length; ++i) {
for(j = 0; jB-length; ++j) {
if(A-data[i] == B-data[j]) {
C-data[k++] = A-data[i];
break;
}
}
}
C-length = k;
return C;
}
SqList *OrList(SqList *A, SqList *B) {/* A∪B */
int i,j,flag;
DataType e;
SqList *C = (SqList *)malloc(sizeof(SqList));
C-length = A-length + B-length;
C-data = https://www.04ip.com/post/(DataType *)malloc(C-length * sizeof(DataType));
for(i = 0; iA-length; ++i) C-data[i] = A-data[i];
for(i = 0; iB-length; ++i) {
e = B-data[i];
flag = 1;
for(j = 0; jC-length; ++j) {
if(e == C-data[j]) {
flag = 0;
break;
}
}
if(flag) InsertList(C,e);
}
return C;
}
void PrintList(SqList *L) {
int i;
for(i = 0; iL-length; ++i)
printf("%d ",L-data[i]);
printf("\n");
}
void FreeList(SqList *L) {
free(L-data);
free(L);
}
void main() {
DataType x;
DataType arra[] = {36,24,31,5,90,65,70,39,37};
DataType arrb[] = {9,8,43,51,37,89,33,46,29,80,56};
int alen = sizeof(arra)/sizeof(arra[0]);
int blen = sizeof(arrb)/sizeof(arrb[0]);
SqList *A = CreateList(arra,alen);
printf("A线性表为: ");
PrintList(A);
SqList *B = CreateList(arrb,blen);
printf("B线性表为: ");
PrintList(B);
SqList *C = AndList(A,B);
SqList *D = OrList(A,B);
printf(" C = A∩B: ");
PrintList(C);
printf(" D = A∪B: ");
PrintList(D);
printf("在D表中插入数据 : ");
scanf("%d",x);
InsertList(D,x);
printf("D表插入x后 :");
PrintList(D);
printf("删除D表中数据 : ");
scanf("%d",x);
RemoveListElem(D,x);
printf("删除x后的D表为 :");
PrintList(D);
FreeList(A);
FreeList(B);
FreeList(C);
FreeList(D);
}
c语言顺序表的创建程序/*
*程序不足之处:1,main函数不应该为 void main
*2,创建空的顺序表函数中 SqList L;//定义顺序表L L是局部变量 , 
函数结束即销毁 , 应该用指针代替
*3 , SqList CreateList(SqList L)//创建顺序表(非空)函数中:
scanf("%d",L.elem); L里面的elem本来就是地址,
没必要 再加符号,且每次输入都一直放在首地址,
没达到程序所要表达的意思
*4,void print(SqList L)//输出当前顺序表 函数中:
printf("%-3d",L.elem); 和上面是一样的道理
*5 , main函数中没有将申请的内存释放
*现将程序稍作修改如下,望采纳
*/
#includestdio.h
#includestdlib.h
#define LIST_INIT_SIZE 100
#define Icreament 20
typedef int ElemType;//用户自定义数据元素类型
typedef struct
{
ElemType *elem;//顺序表的基地址
int length;//顺序表的当前长度
int listsize;//预设空间容量
}SqList;//线性表的顺序存储结构
SqList* InitList()//创建空的顺序表
{
SqList* L = (SqList*)malloc(sizeof(SqList));//定义顺序表L
if(!L)
{
printf("空间划分失败,程序退出\n");
return NULL;
}
L-elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!L-elem)
{
printf("空间划分失败 , 程序退出\n");
return NULL;
}
L-length=0;
L-listsize=LIST_INIT_SIZE;
return L;
}
int CreateList(SqList* L)//创建顺序表(非空)
{
int number;//顺序表中元素的个数
int i;//循环变量
printf("请输入顺序表中元素的个数:");
scanf("%d",number);
if(numberLIST_INIT_SIZE)//一定要判断输入的个数是否大于顺序表的最大长度

推荐阅读