一、静态表静态分配
#include<stdio.h>
#define maxsize 10
typedef struct {
int data[maxsize];
int length;
}Sqlist;
void InitList(Sqlist& L) {
for (int i = 0; i < maxsize; i++)
{
L.data[i] = 0;
}
L.length = 0;
}
int Staticmain()
{
Sqlist L;
InitList(L);
for (size_t i = 0; i < maxsize; i++)
{
printf("data[%d] = %d\n", i, L.data[i]);
}
return 0;
}
二、动态分配
typedef struct
{
int* data;
int MaxSize;
int length;
}Seqlist_atoi;
void Initlist(Seqlist_atoi &L)
{
L.data = (int*)malloc(Initsize * sizeof(int));
L.length = 0;
L.MaxSize = Initsize;
}
void IncreaseSize(Seqlist_atoi& L, int len)
{
int* p = L.data;
L.data = (int*)malloc((L.MaxSize + len) * sizeof(int));
for (int i = 0; i < L.length; i++)
{
L.data[i] = p[i];
}
L.MaxSize = L.MaxSize + len;
free(p);
}
int motion_main()
{
Seqlist_atoi L;
Initlist(L);
IncreaseSize(L, 5);
return 0;
}
三、顺序表掺入
bool ListInsert(Sqlist& L, int i, int e)
{
if (i<1 || i>L.length+1)
{
return false;
}
if (L.length > maxsize)
{
return false;
}
for (int j = L.length; j >=i ; j--)
{
L.data[j] = L.data[j - 1];
}
L.data[i - 1] = e;
L.length++;
return true;
}
4、删除操作
bool LisDelete(Sqlist& L, int i, int& e)
{
if (i<1 || i>L.length)
{
return false;
}
e = L.data[i];
for (int j = L.length; j > i; j++)
{
L.data[j - 1] = L.data[j];
}
L.length--;
return true;
}
五、单链表相关操作
typedef struct LNode
{
int data;
struct LNode* next;
}LNode,*LinkList;
bool InitList(LinkList &L)
{
L = NULL;
return true;
}
void test()
{
LinkList L;
InitList(L);
}
bool Empty(LinkList L)
{
if (L == NULL)
return true;
else
{
return false;
}
}
bool InitList_head(LinkList &L)
{
L = (LNode*)malloc(sizeof(LNode));
if (L == NULL)
{
return false;
}
L->next = NULL;
}
void head_text()
{
LinkList L;
InitList_head(L);
}
bool head_empty(LinkList L)
{
if (L->next == NULL)
{
return true;
}
else
{
return false;
}
}
bool ListInsert_head(LinkList& L, int i, int e)
{
if (i<1)
{
return false;
}
LNode *p;
int j = 0;
p = L;
while (p != NULL && j < i - 1)
{
p = p->next;
j++;
}
if (p == NULL)
{
return false;
}
LNode* s = (LNode*)malloc(sizeof(LNode));
s->data = e;
s->next = p->next;
p->next = s;
return true;
}
bool ListInsert(LinkList& L, int i, int e)
{
if (i < 1)
{
return false;
}
if (i == 1)
{
LNode* s = (LNode*)malloc(sizeof(LNode));
s->data = e;
s->next = L;
L = s;
return true;
}
LNode* p;
int j = 1;
p = L;
while (p != NULL && j < i - 1)
{
p = p->next;
j++;
}
if (p == NULL)
{
return false;
}
LNode* s = (LNode*)malloc(sizeof(LNode));
s->data = e;
s->next = p->next;
p->next = s;
return true;
}