#include#include#define list_init_size 100
#define listincrement 10
#define status int
#define overflow -1
#define ok 1
#define error 0
#define elemtype int
typedef struct
sqlist;
//比較函式
int equals(int a, int b)
else
}int cmpmax(int a, int b)
else
}int cmpmin(int a, int b)
else
} //初始化
status initlist(sqlist *l)
l->length = 0;
l->listsize = list_init_size;
return ok;
}//查詢符合條件的元素的位置
int locateelem(sqlist* l, int e, int(*pf)(int, int)) //獲取第乙個e元素的位置
else
}return 0;
}//得到指定位置元素的值
int getelem(sqlist* l, int i, int* e) //取第i個資料元素
else
}//插入
status listinsert(sqlist *l, int i,elemtype e)
if(l->length >= l->listsize)
l->elem = newbase;
l->listsize = l->listsize + listincrement;
}for(j = l->length-1; j >= i-1; ++j)
l->elem[i-1] = e;
l->length++;
return ok;
}//刪除
status listdelete(sqlist *l,int i,elemtype *e)
(*e) = l->elem[i-1];
for(; i < l->length; ++i)
l->length--;
return ok;
}//輸出列印
void listprint(sqlist l)
else if(!l.length)
else
}printf("\n");
}//刪除最小
void deletemin(sqlist *l)
min = l->elem[0];
tag = 0;
for(i = 1; i < l->length; ++i)
}listdelete(l, tag + 1, &e);
}void destroy_list(sqlist *l)
l->length = 0;
}void clear_list(sqlist *l)
int main(void)
; initlist(&l);
for (i = 1; i <= 9; i++)
printf("插入完成後 l = : ");
listprint(l);
listdelete(&l, 2, &e);
printf("刪除第 2 個後l = : ");
listprint(l);
deletemin(&l);
printf("刪除l中最小值後l = : ");
listprint(l);
deletemin(&l);
printf("刪除l中最小值後l = : ");
listprint(l);
deletemin(&l);
printf("刪除l中最小值後l = : ");
listprint(l);
destroy_list(&l);
listprint(l);
return 0;
}
動態順序表的實現
寫這篇部落格主要是講述一下動態順序表的實現,其中包含 列印 建立 銷毀 尾部插入 尾部刪除 頭部插入 頭部刪除 在順序表的pos位置上插入元素x 刪除順序表pos位置上的元素 順序表中查詢資料x,返回該元素在順序表中的位置 修改pos位置的資料 氣泡排序 選擇排序 查詢已排序順序表中的元素x 等操作...
動態實現順序表
順序表是在計算機記憶體中以 陣列的形式儲存的線性表,是指用一組位址連續的 儲存單元 依次儲存 資料元素 的線性結構。線性表採用順序儲存的方式儲存就稱之為順序表。順序表是將表中的結點依次存放在計算機記憶體中一組位址連續的 儲存單元中。下面來進行順序表的動態實現 標頭檔案 ifndef seqlist ...
實現動態順序表
標頭檔案seqlist.h中 pragma once include include typedef int datatype typedef struct seqlist seqlist 列印順序表 void printseqlist seqlist pseq printf n 增大容量 void...