亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

C語言順序表的實現代碼

2020-01-26 13:54:50
字體:
來源:轉載
供稿:網友

本文實例為大家分享了C語言實現順序表的具體代碼,供大家參考,具體內容如下

seqlist.h

#ifndef __SEQLIST_H__#define __SEQLIST_H__#include<cstdio>#include<malloc.h>#include<assert.h>#define SEQLIST_INIT_SIZE 8#define INC_SIZE 3 //空間增量的大小typedef int ElemType;typedef struct Seqlist { ElemType *base; int capacity; //順序表容量 int size; //表的大小}Seqlist;bool Inc(Seqlist *list);//增加順序表的容量void InitSeqlist(Seqlist *list); //初始化順序表void push_back(Seqlist *list, ElemType x); //在順序表的末尾插入元素void push_front(Seqlist *list, ElemType x); //在順序表的頭部插入元素void show_list(Seqlist *list); //顯示順序表中的元素void pop_back(Seqlist *list); //刪除順序表最后一個元素void pop_front(Seqlist *list); //刪除順序表第一個元素void insert_pos(Seqlist *list, int pos, ElemType x);//在順序表的選定位置上插入數據int find(Seqlist *list, ElemType key); //在順序表中查找元素key的下標int length(Seqlist *list);//求順序表的長度void delete_pos(Seqlist *list, int pos); //刪除順序表中特定位置的數據元素void delete_val(Seqlist *list, int key);//刪除順序表中值為key的數據元素void sort(Seqlist *list);//冒泡排序void reverse(Seqlist *list);//逆置順序列表void clear(Seqlist *list);//清除順序表中的所有元素void destroy(Seqlist *list);//摧毀順序表void merge(Seqlist *lt, Seqlist *la, Seqlist *lb);//合并兩個順序列表#endif //__SEQLIST_H__ 

seqlist.cpp

#include"seqlist.h"bool Inc(Seqlist *list) { ElemType *newbase = (ElemType*)realloc(list, sizeof(ElemType)*(list->capacity + INC_SIZE)); //重新分配內存空間 if (newbase == NULL) {  printf("內存空間已滿,無法再分配內存空間!/n");  return false; } list->base = newbase; list->capacity += INC_SIZE; return true;}void InitSeqlist(Seqlist *list) { list->base = (ElemType*)malloc(sizeof(ElemType)*SEQLIST_INIT_SIZE); assert(list->base != NULL); list->capacity = SEQLIST_INIT_SIZE; list->size = 0;}void push_back(Seqlist *list, ElemType x) { if (list->size >= list->capacity && !Inc(list)) { //Inc(list)用來判斷增加順序表容量是否成功,只有在失敗的情況下才會進入if語句中  printf("順序表容量已滿,無法再在表尾繼續插入新元素!/n");  return; } list->base[list->size] = x; list->size++;}void push_front(Seqlist *list, ElemType x) { if (list->size >= list->capacity && !Inc(list)) {  printf("順序表容量已滿,無法再在表頭插入新元素!/n");  return; } for (int i = list->size;i > 0;i--) {  list->base[i] = list->base[i - 1]; } list->base[0] = x; list->size++;}void show_list(Seqlist *list) { for (int i = 0;i < list->size;i++) {  printf("%d ", list->base[i]); } printf("/n");}void pop_back(Seqlist *list) { if (list->size == 0) {  printf("順序表已空,無法再在表尾刪除元素!/n");  return; } list->size--;}void pop_front(Seqlist *list) { if (list->size == 0) {  printf("順序表已空,無法再在表頭刪除元素!/n");  return; } for (int i = 0;i < list->size - 1;i++) {  list->base[i] = list->base[i + 1]; } list->size--;}void insert_pos(Seqlist *list, int pos, ElemType x) { if (pos<0 || pos>list->size) {  printf("插入位置不合法,無法插入元素!/n");  return; } if (list->size >= list->capacity && !Inc(list)) {  printf("順序表容量已滿,無法在插入新的元素!/n");  return; } for (int i = list->size;i > pos;i--) {  list->base[i] = list->base[i - 1]; } list->base[pos] = x; list->size++;}int find(Seqlist *list, ElemType key) { for (int i = 0;i < list->size;i++) {  if (list->base[i] == key)   return i; } return -1;}int length(Seqlist *list) { return list->size;}void delete_pos(Seqlist *list, int pos) { if (pos < 0 || pos >= list->size) {  printf("刪除位置不合法,無法刪除元素!/n");  return; } for (int i = pos;i < list->size - 1;i++) {  list->base[i] = list->base[i + 1]; } list->size--;}void delete_val(Seqlist *list, int key) { int pos = find(list, key); if (pos == -1) {  printf("順序表中沒有這個元素!/n");  return; } delete_pos(list, pos);}void sort(Seqlist *list) { for (int i = 0;i < list->size - 1;i++) {//排序的趟數(例如5個數據需要比較4趟)  for (int j = 0;j < list->size - 1 - i;j++) {//每一趟比較中的比較次數(例如5個數據在第0趟需要比較4次)   if (list->base[j] > list->base[j + 1]) {    ElemType temp = list->base[j];    list->base[j] = list->base[j + 1];    list->base[j + 1] = temp;   }  } }}void reverse(Seqlist *list) { if (list->size == 0 || list->size == 1) return; int low = 0, high = list->size - 1; while (low < high) {  ElemType temp = list->base[low];  list->base[low] = list->base[high];  list->base[high] = temp;  low++;  high--; }}void clear(Seqlist *list) { list->size = 0;}void destroy(Seqlist *list) { free(list->base); list->base = NULL; list->capacity = 0; list->size = 0;}void merge(Seqlist *lt, Seqlist *la, Seqlist *lb) { lt->capacity = la->size + lb->size; lt->base = (ElemType*)malloc(sizeof(ElemType)*lt->capacity); assert(lt->base != NULL); int ia = 0, ib = 0, ic = 0; while (ia < la->size&&ib < lb->size) {  if (la->base[ia] < lb->base[ib]) {   lt->base[ic++] = la->base[ia++];  }  else {   lt->base[ic++] = lb->base[ib++];  } } while (ia < la->size) {  lt->base[ic++] = la->base[ia++]; } while (ib < lb->size) {  lt->base[ic++] = lb->base[ib++]; } lt->size = la->size + lb->size; show_list(lt);}

main.cpp

#include"seqlist.h"void main() { Seqlist list; InitSeqlist(&list); ElemType item; int pos; int select = 1; while (select) {  printf("*******************************************/n");  printf("*[1] push_back  [2] push_front */n");  printf("*[3] show_list  [4] pop_back  */n");  printf("*[5] pop_front  [6] insert_pos */n");  printf("*[7] find    [8] length  */n");  printf("*[9] delete_pos  [10] delete_value */n");  printf("*[11] sort    [12] reverse  */n");  printf("*[13] clear   [14] merge   */n");  printf("*[0] quit_system       */n");  printf("*******************************************/n");  printf("請選擇:>>");  scanf("%d", &select);  if (select == 0) break;  switch (select) {  case 1:   printf("請輸入要插入的數據(-1結束):>");   while (scanf("%d", &item), item != -1) {//先輸入item的值,只要item不等于-1就接著循環    push_back(&list, item);   }   break;  case 2:   printf("請輸入要插入的數據(-1結束):>");   while (scanf("%d", &item), item != -1) {    push_front(&list, item);   }   break;  case 3:   show_list(&list);   break;  case 4:   pop_back(&list);   break;  case 5:   pop_front(&list);   break;  case 6:   printf("請輸入要插入的數據:>");   scanf("%d", &item);   printf("請輸入要插入的位置:>");   scanf("%d", &pos);   insert_pos(&list, pos, item);   break;  case 7:   printf("請輸入要查找的數據:>");   scanf("%d", &item);   pos = find(&list, item);   if (pos == -1)    printf("查找的數據元素不在順序表中!/n");   else    printf("查找的數據元素在順序表中的下標位置為%d/n", pos);   break;  case 8:   printf("順序表的長度為%d/n", length(&list));   break;  case 9:   printf("請輸入要刪除數據在順序表中的下標位置:>");   scanf("%d", &pos);   delete_pos(&list, pos);   break;  case 10:   printf("請輸入要刪除數據的值:>");   scanf("%d", &item);   delete_val(&list, item);   break;  case 11:   sort(&list);   break;  case 12:   reverse(&list);   break;  case 13:   clear(&list);   break;  case 14:   Seqlist mylist, yourlist;   ElemType item1, item2;   InitSeqlist(&mylist);   InitSeqlist(&yourlist);   printf("請輸入順序表1中的元素值(-1結束):>");   while (scanf("%d", &item1), item1 != -1) {    push_back(&mylist, item1);   }   printf("請輸入順序表2中的元素值(-1結束):>");   while (scanf("%d", &item2), item2 != -1) {    push_back(&yourlist, item2);   }   merge(&list, &mylist, &yourlist);   destroy(&mylist);   destroy(&yourlist);   break;  default:   printf("輸入的選擇錯誤!請重新輸入!/n");   break;  } } destroy(&list);}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成人精品久久亚洲高清不卡| 久久国产加勒比精品无码| 精品一区二区三区四区在线| 久久久国产精品亚洲一区| 国产精品视频成人| 久久色免费在线视频| 亚洲成人av片| 日韩电影中文字幕一区| 亚洲欧美第一页| 国产视频欧美视频| 狠狠久久五月精品中文字幕| 最近2019中文字幕大全第二页| 一本大道亚洲视频| 欧美一区二区三区图| 国产日本欧美视频| 久久免费视频网站| 亚洲成人久久网| 亚洲人成免费电影| 日韩电影中文字幕在线观看| 欧美性生交大片免网| 国产免费久久av| 日韩av三级在线观看| 欧美人交a欧美精品| 国产精品永久免费观看| 欧美激情乱人伦一区| 欧美日韩在线视频首页| 欧美夫妻性生活视频| 日韩中文字幕网站| 欧美疯狂做受xxxx高潮| 亚洲精品电影网站| 欧美日韩国产中字| 国产精品一区二区三区在线播放| 日韩有码在线播放| 国产精品久久久久久久久久久新郎| 欧美精品在线第一页| 欧美国产日韩一区| 欧美成人一区在线| 国产精品国产福利国产秒拍| 国产精品a久久久久久| 成人久久精品视频| 亚洲直播在线一区| 亚洲精品一区在线观看香蕉| 久久精品99无色码中文字幕| 欧美专区在线播放| 2020久久国产精品| 久久久91精品国产一区不卡| 在线亚洲男人天堂| 国产亚洲精品成人av久久ww| 国产成人涩涩涩视频在线观看| 九九精品在线观看| 欧美中文字幕在线视频| 亚洲a级在线播放观看| 欧美第一黄色网| 亚洲精品网站在线播放gif| 57pao成人永久免费视频| 一区二区三区无码高清视频| 久久久精品影院| 亚洲一区二区三区视频播放| 精品国内自产拍在线观看| 久久亚洲春色中文字幕| 亚洲精品国产综合久久| 日韩欧美中文第一页| 少妇精69xxtheporn| 亚洲跨种族黑人xxx| 欧美极品欧美精品欧美视频| 欧美日本在线视频中文字字幕| 欧美网站在线观看| 国产在线观看精品一区二区三区| 国产精品h在线观看| 午夜精品福利电影| 日韩av一区在线| 亚洲字幕一区二区| 91国产视频在线播放| 欧美日韩精品在线观看| 久久免费视频这里只有精品| 欧美理论电影网| 国产美女被下药99| 国产欧亚日韩视频| 成人免费福利在线| 色综合导航网站| 国产91色在线|免| 色香阁99久久精品久久久| 81精品国产乱码久久久久久| 亚洲成人黄色网址| 日韩在线欧美在线国产在线| 日韩大胆人体377p| 国语自产精品视频在线看抢先版图片| 久久久91精品国产一区不卡| 性色av一区二区三区| 精品国产31久久久久久| 国产精品美女av| 国产在线不卡精品| 在线播放国产一区中文字幕剧情欧美| 国产精品视频一区国模私拍| 国产91精品高潮白浆喷水| 亚洲a级在线播放观看| 欧美精品手机在线| 欧美性猛交xxxx乱大交| 91精品国产高清久久久久久久久| 国产成人福利夜色影视| 国产69精品久久久久9999| 久久久久久91| 久久伊人91精品综合网站| 欧美在线不卡区| 久久天天躁狠狠躁夜夜躁| 亚洲精品99999| 91精品国产综合久久香蕉最新版| 亚洲午夜女主播在线直播| 欧美激情第1页| 91久久精品久久国产性色也91| 久久久精品国产| 久久精品国产清自在天天线| 国产91ⅴ在线精品免费观看| 国产精品一区二区久久| 色琪琪综合男人的天堂aⅴ视频| 一区二区三区天堂av| 精品无码久久久久久国产| 亚洲三级黄色在线观看| 狠狠躁夜夜躁人人爽天天天天97| 亚洲精品国精品久久99热| 久久免费视频网站| 久久精品国亚洲| 亚洲综合日韩中文字幕v在线| 国产va免费精品高清在线观看| 国产亚洲精品综合一区91| 国产精品视频免费观看www| 精品福利免费观看| 国产美女精品免费电影| 欧美成人三级视频网站| 国产精品福利久久久| 91久久国产婷婷一区二区| 成人av在线网址| 这里只有精品久久| 色悠久久久久综合先锋影音下载| 欧美日韩xxx| 欧美韩国理论所午夜片917电影| 日韩精品在线观看一区| 国产综合在线看| 亚洲欧美国产精品va在线观看| 九九热在线精品视频| 亚洲一区二区三区xxx视频| 日韩视频―中文字幕| 国产精品男人的天堂| 亚洲最大福利视频网站| 欧美大片在线影院| 久久久精品久久久久| 国产精品久久久久久亚洲调教| 中文字幕日韩欧美精品在线观看| 成人精品一区二区三区电影黑人| 韩国福利视频一区| 国产日韩欧美黄色| 久久综合久中文字幕青草| 国产精品久久色| 色先锋资源久久综合5566| 视频直播国产精品| 精品自在线视频| 精品视频在线播放色网色视频| 久久久久久久国产精品视频| 日韩欧美主播在线| 日韩成人中文字幕在线观看| 成人a视频在线观看| 国产精品久久久久免费a∨大胸| 亚洲成人免费在线视频| 久久精品电影网|