#ifndef LIST_H_INCLUDED
#define LIST_H_INCLUDED
typedef int ElemType;
typedef struct List ListType;
typedef unsigned short int Bool;
struct List
{
ElemType * elem;
int elem_num;
};
Bool ListInit(ListType *);
int ListElemNum(const ListType);
Bool ListInsert(ListType *, int, ElemType);
Bool ListDelete(ListType *, int);
void ShowElem(const ListType);
#endif
#include "list.h"
#include <stdlib.h>
#include <stdio.h>
Bool ListInit(ListType *list_ptr)
{
list_ptr->elem = (ElemType *)malloc(0);
if(!(list_ptr->elem)) return 0;
list_ptr->elem_num = 0;
return 1;
}
int ListElemNum(const ListType list_in)
{
return list_in.elem_num;
}
Bool ListInsert(ListType * list_ptr, int position, ElemType insert_elem)
{
if(position < 0 || position > list_ptr->elem_num)
return 0;
ElemType * new_elem = (ElemType *)malloc((list_ptr->elem_num + 1) * sizeof(ElemType));
if(!new_elem) return 0;
int i;
for(i = 0; i < position; ++i)
new_elem[i] = list_ptr->elem[i];
for(i = position; i < list_ptr->elem_num; ++i)
new_elem[i + 1] = list_ptr->elem[i];
free(list_ptr->elem);
list_ptr->elem = new_elem;
list_ptr->elem[position] = insert_elem;
list_ptr->elem_num++;
return 1;
}
Bool ListDelete(ListType * list_ptr, int position)
{
if(position < 0 || position > list_ptr->elem_num - 1)
return 0;
ElemType * new_elem = (ElemType *)malloc((list_ptr->elem_num - 1) * sizeof(ElemType));
int i;
for(i = position; i < list_ptr->elem_num - 1; ++i)
list_ptr->elem[i] = list_ptr->elem[i + 1];
for(i = 0; i < list_ptr->elem_num - 1; ++i)
new_elem[i] = list_ptr->elem[i];
free(list_ptr->elem);
list_ptr->elem = new_elem;
list_ptr->elem_num--;
return 1;
}
void ShowElem(const ListType list_in)
{
int i;
for(i = 0; i < list_in.elem_num; ++i)
{
printf("elem[%d] = %d\n", i, list_in.elem[i]);
}
}
#include <stdio.h>
#include <stdlib.h>
#include "list.h"
int main()
{
ListType list1;
ListInit(&list1);
printf("线性表中元素个数:%d\n", ListElemNum(list1));
ListInsert(&list1, 0, 1);
printf("线性表中元素个数:%d\n", ListElemNum(list1));
ListInsert(&list1, 1, 2);
printf("线性表中元素个数:%d\n", ListElemNum(list1));
ListInsert(&list1, 2, 3);
printf("线性表中元素个数:%d\n", ListElemNum(list1));
ListInsert(&list1, 3, 4);
printf("线性表中元素个数:%d\n", ListElemNum(list1));
ShowElem(list1);
ListDelete(&list1, 0);
printf("线性表中元素个数:%d\n", ListElemNum(list1));
ListDelete(&list1, 1);
printf("线性表中元素个数:%d\n", ListElemNum(list1));
ListDelete(&list1, 1);
printf("线性表中元素个数:%d\n", ListElemNum(list1));
ListDelete(&list1, 0);
printf("线性表中元素个数:%d\n", ListElemNum(list1));
ShowElem(list1);
free(list1.elem);
return 0;
}
- 执行结果