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

首頁 > 編程 > C > 正文

C語言實現的順序表功能完整實例

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

本文實例講述了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);}

希望本文所述對大家C語言程序設計有所幫助。

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

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
97精品视频在线| 亚洲天堂精品在线| 91精品国产自产91精品| 欧美成人黑人xx视频免费观看| 81精品国产乱码久久久久久| 中文.日本.精品| 成人高清视频观看www| 欧美日韩成人精品| 亚洲精品中文字幕女同| 日韩精品免费在线| 国产一区二区日韩精品欧美精品| 欧美一级黑人aaaaaaa做受| 亚洲欧美另类中文字幕| 日韩欧美高清在线视频| 中文字幕视频在线免费欧美日韩综合在线看| 日韩网站在线观看| 亚洲天堂免费视频| 国产精品久久久久久超碰| 欧美尤物巨大精品爽| 久久国产精品久久久久久| 国产精品高潮呻吟视频| 国产欧美日韩中文字幕在线| 狠狠躁夜夜躁人人躁婷婷91| 久久精品影视伊人网| 欧美日韩一区二区免费在线观看| 欧美三级免费观看| 亚洲精品自在久久| 亚洲午夜色婷婷在线| 国产亚洲欧美日韩一区二区| 欧美激情区在线播放| 高清欧美电影在线| 国产精品偷伦免费视频观看的| 久久精品成人欧美大片古装| 日韩av综合中文字幕| 97超碰国产精品女人人人爽| 国产va免费精品高清在线观看| 中文字幕日韩综合av| 亚洲欧美国产日韩天堂区| 久久国产精品久久国产精品| 高清欧美一区二区三区| 国产国产精品人在线视| 超碰97人人做人人爱少妇| 亚洲网在线观看| 亚洲欧美国产一区二区三区| 久久人人爽人人爽人人片av高清| 亚洲国语精品自产拍在线观看| 91青草视频久久| 欧美黄网免费在线观看| 亚洲欧美日韩图片| 日韩视频免费在线观看| 欧美成人合集magnet| 最近2019中文免费高清视频观看www99| 91精品国产91久久久久久最新| 国产午夜精品美女视频明星a级| 亚洲深夜福利网站| 亚洲人成网站色ww在线| 欧美性极品xxxx娇小| 正在播放欧美一区| 国产精品福利在线观看| 国产美女91呻吟求| 成人黄色av播放免费| 日韩在线观看网站| 51精品国产黑色丝袜高跟鞋| 亚洲欧洲日产国码av系列天堂| 亚洲一级黄色av| 亚洲国产高清高潮精品美女| 色先锋资源久久综合5566| 97碰在线观看| 91av免费观看91av精品在线| 国产在线精品一区免费香蕉| 欧美视频二区36p| 一区二区三区四区在线观看视频| 韩国欧美亚洲国产| 欧美午夜宅男影院在线观看| 日韩美女免费线视频| 亚洲欧洲国产精品| 欧美综合国产精品久久丁香| 亚洲综合日韩中文字幕v在线| 久久久久久一区二区三区| 久久人人爽人人爽人人片av高请| 日韩网站免费观看高清| 中日韩午夜理伦电影免费| 欧美日韩免费观看中文| 亚洲精品国产成人| 精品呦交小u女在线| 久久影视三级福利片| 欧美激情在线有限公司| 国产精品丝袜久久久久久不卡| 国产精品大片wwwwww| 欧美一级淫片播放口| 亚洲一区999| 欧美专区在线视频| 欧美午夜影院在线视频| 欧美电影免费观看高清完整| 92版电视剧仙鹤神针在线观看| 欧美性xxxxhd| 奇米成人av国产一区二区三区| 在线播放国产一区二区三区| 欧美激情国产高清| 日韩在线中文字| 精品毛片三在线观看| 欧美野外wwwxxx| 97精品伊人久久久大香线蕉| 色香阁99久久精品久久久| 成人av在线网址| 亚洲人成毛片在线播放| 欧美尤物巨大精品爽| 91精品视频网站| 久久久久久久久久av| 欧美高清在线观看| 精品国产区一区二区三区在线观看| 日韩精品极品视频免费观看| 高清欧美性猛交xxxx| 久久久久久久久久久人体| 91国语精品自产拍在线观看性色| 日韩免费在线观看视频| 91美女片黄在线观看游戏| 国内揄拍国内精品少妇国语| 久久久综合av| 亚洲国产欧美精品| 国产精品久久久久久久天堂| 国产精品久久77777| 国产亚洲精品美女久久久| 97高清免费视频| 亚洲成人精品av| 日韩在线高清视频| 川上优av一区二区线观看| 性欧美亚洲xxxx乳在线观看| 成人黄色免费看| 久久久久一本一区二区青青蜜月| 久久国产精品亚洲| 欧美巨乳在线观看| 久久深夜福利免费观看| 亚洲跨种族黑人xxx| 成人春色激情网| 欧美激情在线观看视频| 亚洲视频在线视频| 奇门遁甲1982国语版免费观看高清| 国产不卡精品视男人的天堂| 欧美国产日韩中文字幕在线| 中文日韩在线视频| 亚洲欧美福利视频| 欧美大片在线免费观看| 亚洲欧美日韩综合| 亚洲精品自拍视频| 中文字幕免费精品一区| 在线观看日韩专区| 91成人免费观看网站| 久久综合五月天| 韩国精品美女www爽爽爽视频| 庆余年2免费日韩剧观看大牛| 欧美成人精品h版在线观看| 久久69精品久久久久久久电影好| 亚洲精品aⅴ中文字幕乱码| 国产精品揄拍一区二区| 高清亚洲成在人网站天堂| 中文字幕在线看视频国产欧美| 国产成人综合一区二区三区| 欧美亚洲成人网| 欧美日韩中文在线观看| 亚洲日韩欧美视频| 日韩精品亚洲视频| 国产精品久久久av| 欧美肥老妇视频|