标签:
#include <stdio.h>#include <stdlib.h>#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2#define LIST_INIT_SIZE 100 // 线性表存储空间的初始分配量#define LISTINCREMENT 10 // 线性表存储空间的分配增量typedef int Status;typedef int ElemType;typedef struct{ElemType *elem; // 存储空间基址int length; // 当前长度int listsize; // 当前分配的存储容量(以sizeof(ElemType)为单位)}SqList;Status InitList_Sq(SqList *L);Status ListInsert_Sq(SqList *L, int i, ElemType *e);int main(){SqList sl;if(InitList_Sq(&sl) == 1){printf("创建成功!");int i = 0;int newElem1 = 33;int newElem2 = 25;int newElem3 = 11;int newElem4 = 43;i = ListInsert_Sq(&sl, 1, &newElem1);if(i == 1){printf("%d\n", *(sl.elem));printf("插入成功!");}else{printf("插入失败!");}i = ListInsert_Sq(&sl, 2, &newElem2);if(i == 1){printf("%d\n", *(sl.elem + 1));printf("插入成功!");}else{printf("插入失败!");}i = ListInsert_Sq(&sl, 1, &newElem3);if(i == 1){printf("%d\n", *(sl.elem));printf("插入成功!");}else{printf("插入失败!");}i = ListInsert_Sq(&sl, 2, &newElem4);if(i == 1){printf("%d\n", *(sl.elem + 1));printf("插入成功!");}else{printf("插入失败!");}}else{printf("创建失败!");}return 0;}Status InitList_Sq(SqList *L){L->elem = (ElemType *)malloc(LIST_INIT_SIZE * sizeof(ElemType));if(!L->elem) exit(OVERFLOW); // 存储分配失败L->length = 0; // 空表长度为0L->listsize = LIST_INIT_SIZE; // 初始存储容量return OK;}// InitList_SqStatus ListInsert_Sq(SqList *L, int i, ElemType *e){// 在顺序线性表L中第i个位置之前插入新的元素e,// i的合法值为 1 <= i <= ListLength_Sq(L) + 1ElemType *q = NULL, *p = NULL;if(i < 1 || i > L->length + 1) return ERROR; // i值不合法if(L->length == 0) // 如果是第一个插入元素,则在首地址插入{*(L->elem) = *e; // 插入e++L->length; // 表长增1return OK;}else{if(L->length >= L->listsize) // 当前存储空间已满,增加分配{ElemType *newbase = (ElemType *)realloc(L->elem, (L->listsize + LISTINCREMENT) * sizeof(ElemType));if(!newbase) exit(OVERFLOW); // 存储分配失败L->elem = newbase; // 新基址L->listsize += LISTINCREMENT; // 增加存储容量}//*q = &(L->elem[i-1]); // q为插入位置q = L->elem + (i - 1); // q为插入位置for(p = L->elem + (L->length - 1); p >= q; --p) // 插入位置及之后的元素右移{*(p + 1) = *p;}*q = *e; // 插入e++L->length; // 表长增1return OK;}}// ListInsert_Sq
标签:
原文地址:http://www.cnblogs.com/sober-reflection/p/48002483e118c6b58bef4bce9d650601.html