C语言顺序表的基本操作

Python018

C语言顺序表的基本操作,第1张

#include <stdio.h>

#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|

*/