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 }