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

    xiaoxiao2023-03-24  4

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

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

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

    #include<stdio.h> #include<stdlib.h> #define LIST_INIT_SIZE 100 #define INCREASMENT 10 typedef 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; }

    转载请注明原文地址: https://ju.6miu.com/read-1201875.html
    最新回复(0)