#include <stdlib.h>
typedef int DataType // 定义数据数据类型
typedef struct {
DataType *data // data指向数据区的首个数据
int length // 数据长度
}SqList
void Sort(SqList *L) {
int i,j,k
DataType tmp
for(i = 0 i < L->length - 1 ++i) {
k = i
for(j = i + 1 j < L->length ++j)
if(L->data[k] > L->data[j])
k = j
if(k != i) {
tmp = L->data[k]
L->data[k] = L->data[i]
L->data[i] = tmp
}
}
}
SqList *CreateList(DataType a[],int n) {
int i
SqList *L
L = (SqList *)malloc(sizeof(SqList))
L->data = (DataType *)malloc(n * sizeof(DataType))
L->length = n
for(i = 0 i < n ++i) L->data[i] = a[i]
Sort(L)
return L
}
int InsertList(SqList *L,DataType x) {
int i,j
for (i = 0i < L->lengthi++) {
if(x <= L->data[i]) {
for(j = L->lengthj >= ij--)
L->data[j + 1] = L->data[j] // 结点后移
L->data[i] = x
L->length++
return 1
}
}
L->data[L->length++] = x
return 1
}
int RemoveListElem(SqList *L,DataType d) {
int i,j
for(i = 0 i < L->length ++i) {
if(L->data[i] == d) {
for(j = i j < L->length - 1 ++j)
L->data[j] = L->data[j + 1]
L->length--
return 1
}
}
return 0
}
SqList *AndList(SqList *A, SqList *B) { /* A∩B */
int i,j,k = 0
int len = (A->length > B->length) ? B->length : A->length
SqList *C = (SqList *)malloc(sizeof(SqList))
C->length = len
C->data = (DataType *)malloc(len * sizeof(DataType))
for(i = 0 i < A->length ++i) {
for(j = 0 j < B->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 = (DataType *)malloc(C->length * sizeof(DataType))
for(i = 0 i < A->length ++i) C->data[i] = A->data[i]
for(i = 0 i < B->length ++i) {
e = B->data[i]
flag = 1
for(j = 0 j < C->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 i < L->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)
}
//2020年3月12日编写
#include<stdio.h>
char c=' '
void chang()//长函数
{
printf("___________")
}
void kuang()//宽函数
{
printf("|")
}
void zon(char cc)//总汇函数
{
int a
printf("\n")
printf("|")
for(a=0a<4a++)
{
chang()
if(a<3)
printf("%c",cc)
}
printf("|")
}
void zon2(char a1[],char a2[],char a3[],char a4[])//总汇函数2
{
printf("\n")
printf("|%-11s|",a1)printf("%-11s|",a2)printf("%-11s|",a3)printf("%-11s|",a4)
}//函数;
main()
{
int a,b
for(a=0a<4a++)//第一行
{
printf(" ")
chang()
}
printf("\n|%21c课程表%20c|",c,c)
zon(' ')
zon2(" ","1.2节","3.4节","5.6节")
zon('|')
zon2("星期一","语文","计算机","体育")//第二行
zon('|')
zon2("星期二","数学","政治","数学")//第三行
zon('|')
zon2("星期三","英语","体育","自习")//第四行
zon('|')
zon2("星期四","计算机","语文","体育")//第五行
zon('|')
zon2("星期五","计算机","英语","自习")//第六行
zon('|')
}
/*
printf(" ___________\n")// -=11
printf("| 语 文 |\n")// |%2d字%3d字%2d|
printf("|___________|\n")// |%11d|
*/