顺序表基本操作

#include "stdafx.h"

#include

#include

#include

#define ListSize 100

typedef int DataType;

/*typedef struct{

char name[10];

char major[10];

int score;

}DataType;*/

typedef struct

{

DataType data[ListSize];

int length;

}SeqList;

void InitList(SeqList *L)

{

L->length = 0;

}

void InitList1(SeqList L)

{

L.length = 0;

}

void InitListData(SeqList *L)

{

L->data[0] = 3;

L->data[1] = 7;

L->data[2] = 3;

L->data[3] = 2;

L->data[4] = 1;

L->data[5] = 1;

L->data[6] = 8;

L->data[7] = 7;

L->data[8] = 3;

L->length = 9;

}

void InitListData2(SeqList *L)

{

L->data[0] = 3;

L->data[1] = 7;

L->data[2] = 11;

L->data[3] = 14;

L->data[4] = 20;

L->data[5] = 51;

L->length = 6;

}

void fun(SeqList * L)

{

int i, j, k;

k = 0;

for (i = 0; i < L->length; i++)

{

for (j = 0; jL->data[i] != L->data[j]; j++)

if (j == k)

{

if (k != i)

{

L->data[k] = L->data[i];

}

k++;

}

}

L->length = k;

}

 

void fun2(SeqList *L, DataType x) {

int i = 0, j;

while (i < L->length && x>L->data[i]) i++;

if (i < L->length && x == L->data[i])

{

for (j = i + 1; j < L->length; j++) {

L->data[j - 1] = L->data[j];

}

L->length--;

}

else

{

for (j = L->length; j>i; j--)

{

L->data[j] = L->data[j - 1];

}

L->data[i] = x;

L->length++;

}

}

void dispList(SeqList * L)

{

printf("\n the list length=%d,\n", L->length);

for (int i = 0; i < L->length; i++)

printf("%i ", L->data[i]);

}

void InsertList3(SeqList*L, DataType t, int i)

{

int j;

if (i<1 || i>L->length + 1)

{

puts("²åÈëλÖôí");

}

if (L->length >= ListSize)

{

puts("±íÂú²»ÄܲåÈë");

}

for (j = L->length - 1; j >= i - 1; j--)

{

L->data[j + 1] = L->data[j];

}

L->data[i - 1] = t;

L->length++;

//L->length=L->length+1;

}

void DeleteList(SeqList*L, int i)

{

int j;

if (i < 1 || i >= L->length)

{

puts("ɾ³ýλÖôí");

}

if (0 == L->length)

{

puts("¿Õ±í²»ÄÜɾ³ý");

}

for (j = i; j <= L->length - 1; j++)

{

L->data[j - 1] = L->data[j];

}

L->length--;

}

 

int LocateList(SeqList*L, DataType t)

{

int i = 1;

while (i <= L->length && L->data[i - 1] != t)

{

i++;

if (L->data[i - 1] == t)

{

return i;

}

else

{

return -1;

}

}

}

void Modifylist(SeqList*L, DataType t, int i)

{

if (i < 1 || i >= L->length)

{

puts("Ñ¡ÔñλÖôí");

}

L->data[i - 1] = t;

}

int main()

{

SeqList list;

InitListData(&list);

dispList(&list);

getchar();

InsertList3(&list, 2, 3);

dispList(&list);

getchar();

DeleteList(&list, 3);

dispList(&list);

getchar();

int locate = LocateList(&list, 2);

printf("\n the current location is %d\n", locate);

Modifylist(&list, 10, 3);

getchar();

dispList(&list);

return 0;

}

你可能感兴趣的:(顺序表基本操作)