线性表之顺序表示算法实现(一)

来源:互联网 发布:在淘宝卖性保健品简介 编辑:程序博客网 时间:2024/04/29 16:40

  为了准备考研,重拾了数据结构的代码学习,看了大量的代码片段之后,我实在是受不了身为程序狗,不敲代码而去手写代码的烦躁,于是还是将今天晚上的学习内容敲在了编译器里面,重拾对代码最初的热爱。

  严蔚敏版本的数据结构不愧为数据结构中的典范,我真的很是建议从严的书入手,辅以王道或者天勤。当然,我是不建议天勤的,极其的没有专业性,难怪号称出自学生之手。

  不多说了,今天时间紧,只是测试书中算法2.3和算法2.4。加之一些可以进行测试的必要性补充,如下


#include<stdio.h>#include<stdlib.h>#define LIST_INIT_SIZE 100#define INCREASMENT 10typedef int ElemType;typedef struct{    ElemType *elem;    int length;    int listsize;}SqList;int InitList_Sq(SqList &L){ // 初始化顺序表  算法2.3    L.elem = (ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));    if(!L.elem)return 0;    L.length = 0;    L.listsize = LIST_INIT_SIZE;    return 1;}void CreatList(SqList &L,int length){ //  创建 顺序表    int i;    L.length = length;    printf("请输入创建的顺序表:");    for(i=0;i<length;i++){        scanf("%d",&L.elem[i]);    }}int Insert(SqList &L,int i,ElemType e){//  插入算法  算法2.4    ElemType *newbase,*p,*q;    if(i<1||i>L.length+1)return 0;    if(L.length>=L.listsize){        newbase = (ElemType *)realloc(L.elem,(L.listsize+INCREASMENT)*sizeof(ElemType));        if(!newbase)return 0;        L.elem = newbase;        L.listsize+=INCREASMENT;    }    q = &(L.elem[i-1]);    for(p = &(L.elem[L.length-1]);p>=q;--p)        *(p+1) = *p;    *q=e;    ++L.length;    return 1;}void PrintList(SqList L){//打印 顺序表    int i;    printf("顺序表为 :(");    for(i=0;i<L.length-1;i++){        printf("%d,",L.elem[i]);    }    printf("%d)\n",L.elem[L.length-1]);}int main(){    SqList L;    InitList_Sq(L); // 初始化    CreatList(L,10); // 创建s    PrintList(L);    Insert(L,2,20);    PrintList(L);    return 0;}


0 0
原创粉丝点击