#include <stdio.h>
#include <stdlib.h>
#define InitSize 10
typedef struct {
int *data;
int length;
int maxSize;
} SqList;
int InitList(SqList *l) {
int *data = (int *)malloc(InitSize*sizeof(int));
if (data == NULL) return -1;
l->data = data;
l->length = 0;
l->maxSize = InitSize;
return 1;
}
int IncreaseSize(SqList *l, int len) {
int *p = l->data;
int *data = (int *)malloc((l->maxSize+len)*sizeof(int));
if (data == NULL) return -1;
for (int i = 0; i < l->maxSize; i++) {
data[i] = p[i];
}
l->data = data;
l->maxSize += len;
free(p);
return 1;
}
int ListInsert(SqList *l, int i, int e) {
if (l->length == l->maxSize) return -1;
if (i < 1 || i > l->length + 1) return -1;
for (int j = l->length; j >= i; j--) {
l->data[j] = l->data[j-1];
}
l->data[i-1] = e;
l->length++;
return 1;
}
int ListDelete(SqList *l, int i, int *e) {
if (l->length == 0) return -1;
if (i < 1 || i > l->length) return -1;
*e = l->data[i-1];
for (int j = i; j < l->length; j++) {
l->data[j-1] = l->data[j];
}
l->length--;
return 1;
}
int GetElem(SqList *l, int i) {
if (i < 1 || i > l->length) return -1;
return l->data[i-1];
}
int LocateElem(SqList *l, int e) {
for (int i = 0; i < l->length; i++) {
if (l->data[i] == e) return i+1;
}
return -1;
}
int Length(SqList l) {
return l.length;
}
void ListPrintf(SqList l) {
for (int i = 0; i < l.length; i++) {
printf("%i\n", l.data[i]);
}
}
int Empty(SqList l) {
return l.length == 0 ? 1 : -1;
}
void DestroyList(SqList *l) {
free(l->data);
l->data = NULL;
l->length = 0;
l->maxSize = 0;
}
// 分割線
void Sep() {
printf("**************\n");
}
int main() {
SqList l;
InitList(&l);
ListInsert(&l, 1, 1);
ListInsert(&l,2, 12);
ListInsert(&l,1, 13);
ListPrintf(l);
Sep();
int e = -1;
ListDelete(&l, 1, &e);
printf("%i\n", e);
Sep();
ListPrintf(l);
Sep();
printf("%i\n", GetElem(&l, 2));
printf("%i\n", LocateElem(&l, 1));
printf("%i\n", Length(l));
Sep();
DestroyList(&l);
printf("%p\n", l.data);
printf("%i\n", Empty(l));
return 0;
}
順序表
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
相關閱讀更多精彩內容
- 1二進制中1的個數(shù) 【題目】輸入一個整數(shù),輸出該數(shù)二進制表示中1的個數(shù)。其中負數(shù)用補碼表示。 【考察點】位運算 【...
- //將一個帶頭結點的單鏈表A分解為兩個帶頭結點單鏈表A和B,使得A表中含有原表中序號為奇數(shù)元素,而B表中含有原表中...
- 一、python實現(xiàn)鏈表冒泡排序 - 冒泡排序的概念:冒泡排序是一種交換排序,它的基本思想是:兩兩比較相鄰記錄的關...
- 下面是2020年9月21日面試遇到的一道真實面試題。 題目 兩個有序(順序未知)單向鏈表合并為一個可指定為升序或降...
- 線性表按存儲方式分為順序表和鏈表兩種,其中鏈表又分為單鏈表,循環(huán)鏈表,雙鏈表,雙向循環(huán)鏈表。 順序表 順序表采用順...