• 1) 链表--顺序存储结构


      1 #include <iostream>
      2 using namespace std;
      3 
      4 typedef void Seqlist;
      5 typedef void SeqlistNode;
      6 
      7 typedef struct
      8 {
      9     int length;
     10     int capacity;
     11     unsigned int *node;// 为了动态化节点。
     12 }TSeqList;
     13 
     14 Seqlist* SqList_Create(int capacity)//分配空间
     15 {
     16     int ret=0;
     17     TSeqList *tmp=NULL;
     18 
     19     tmp=(TSeqList*)malloc(sizeof(TSeqList));//分配空间
     20     if(tmp=NULL)
     21     {
     22         ret=-1;
     23         cout<<"func SqList_Create() err: "<<ret<<endl;
     24         return NULL;
     25     }
     26 
     27     memset(tmp,0,sizeof(TSeqList));
     28 
     29     //根据capacity的大小分配节点的空间
     30     tmp->node=(unsigned int*) malloc(sizeof(unsigned int*)*capacity);
     31     if(tmp=NULL)
     32     {
     33         ret=-2;
     34         cout<<"func SqList_Create() : malloc err  "<< ret<<endl;
     35         return NULL;
     36     }
     37     return tmp;
     38 }
     39 
     40 void SeqList_Destory (Seqlist* list)//释放内存空间
     41 {
     42     TSeqList *tList=NULL;
     43     if(list=NULL)
     44         return ;
     45     tList=(TSeqList *) list;
     46 
     47     if(tList->node!=NULL)
     48     {
     49         free (tList->node);
     50     }
     51     free(tList);
     52     return;
     53 }
     54 
     55 //清空链表---回到初始化状态  链表长度==0
     56 void SeqList_Clear(Seqlist *list)
     57 {
     58     TSeqList *tList=NULL;
     59     if(list=NULL)
     60         return ;
     61     tList=(TSeqList *) list;
     62 
     63     tList->length=0;
     64     return;
     65 }
     66 
     67 int SeqList_Length(Seqlist *list)//链表的实际长度
     68 {
     69     TSeqList *tList=NULL;
     70     if(list=NULL)
     71         return -1 ;
     72     tList=(TSeqList *) list;
     73 
     74     return tList->length;
     75 }
     76 
     77 int SeqList_Capacity(Seqlist *list)//链表的容量
     78 {
     79     TSeqList *tList=NULL;
     80     if(list=NULL)
     81         return -1 ;
     82     tList=(TSeqList *) list;
     83 
     84     return tList->capacity;
     85 }
     86 
     87 int  SeqList_Insert(Seqlist *list,SeqlistNode *node,int pos)
     88 {
     89     int ret=-1;
     90     int i=0;
     91     TSeqList *tList=NULL;
     92     if(list==NULL||node==NULL||pos<0)
     93     {
     94         cout<<"func SqList_Create() : malloc err  "<< ret<<endl;
     95         return ret;
     96     }
     97 
     98     tList=(TSeqList *)list;
     99 
    100     //判断是不是满了
    101     if(tList->length>=tList->capacity)
    102     {
    103         ret=-2;
    104         cout<<"func SqList_Create() : malloc err  "<< ret<<endl;
    105         return ret;
    106     }
    107 
    108     //容错修正 6个长度 容量20;用户pos10位置插入
    109     if(pos>=tList->length)
    110     {
    111         pos=tList->length;
    112     }
    113 
    114     //元素后移
    115     for( i=tList->length;i>pos;i--)
    116     {
    117         tList->node[i]=tList->node[i-1];
    118     }
    119     //插入元素
    120     tList->node[i]=(unsigned int) node;
    121     return 0;
    122 }
    123 
    124 int Seqlist_get(Seqlist* list,int pos)
    125 {
    126     int ret=-1;
    127     int i=0;
    128     TSeqList *tList=NULL;
    129     if(list==NULL||pos<0)
    130     {
    131         cout<<"func SqList_Create() : malloc err  "<< ret<<endl;
    132         return -1;
    133     }
    134     tList=(TSeqList *)list;
    135     tList->length++;
    136 
    137     return (unsigned)tList->node[pos];
    138 }
  • 相关阅读:
    bind函数
    尾置返回类型
    lambda表达式
    C++谓词
    capacity和size
    容器操作可能会使迭代器失效
    特殊的forward_list操作
    向顺序容器添加元素
    swap与assign
    迭代器
  • 原文地址:https://www.cnblogs.com/584709796-qq-com/p/5797191.html
Copyright © 2020-2023  润新知