日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

顺序表Sqlist.cpp

發布時間:2024/7/5 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 顺序表Sqlist.cpp 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

順序表Sqlist.cpp

文章目錄

  • 順序表Sqlist.cpp
      • 1 順序表插入邏輯
      • 2 順序表刪除邏輯
      • 3 代碼演示
      • 4 運行結果

1 順序表插入邏輯

在表的第 i 個位置前插入一個元素

  • 實現步驟:

  • 將第 n 至第 i 位的元素向后移動一個位置;
  • 將要插入的元素寫到第 i 個位置;
  • 表長加1。
  • 注意:事先應判斷: 插入位置i 是否合法?表是否已滿?

    應當符合條件:1≤i≤n+1 或 i=[1, n+1]

插入時的平均移動次數為:n (n+1) / 2 ÷(n+1)=n/2≈O(n)


2 順序表刪除邏輯

刪除線性表的第i個位置上的元素

  • 實現步驟:
  • 將第 i+1 至第 n 位的元素向前移動一個位置;
  • 表長減1。

注意:事先需要判斷,刪除位置i 是否合法?

順序表刪除一元素的時間效率為: T(n) = (n-1) / 2 ≈ O(n)

順序表插入、刪除算法的平均空間復雜度為 O(1)


3 代碼演示

以下代碼創建了一個順序表,以隨機數的方式給順序表賦初值,實現了基本的插入,刪除,遍歷

#include <stdlib.h> #include <time.h> #define MAXSIZE (10) #define OK (1) #define ERROR (0)typedef int ElementType; typedef struct ArrayList {ElementType data[MAXSIZE];int length; } *List;List CreateList(void) //創建順序表,初始化 {List L = (List)malloc(sizeof(struct ArrayList));L->length = 0;return L; }void InitList(List L) //給順序表賦初值 {srand((unsigned)(time(NULL)));for (int i = 0; i < MAXSIZE / 2; i++) { L->data[i] = rand()%71+20;L->length++;} }int Insert(List L, int position, ElementType e) {if (position < 1 || position > L->length + 1) {return ERROR;}if (L->length == MAXSIZE) {return ERROR;}for (int i = L->length - 1; i >= position - 1; i--) {L->data[i + 1] = L->data[i];}L->data[position - 1] = e;L->length++;return OK; }int Delete(List L, int position, ElementType *e) {if (position < 1 || position > L->length) {return ERROR;}*e = L->data[position - 1];for (int i = position - 1; i <= L->length - 1; i++) {L->data[i] = L->data[i + 1];}L->length--;return OK; }void PrtList(List L) {for (int i = 0; i <= L->length - 1; i++) {printf("%d ", L->data[i]);}printf("\n"); }int main(void) {int position;int e;List L = CreateList();InitList(L);PrtList(L);printf("\nplease input (position & element) to insert:");scanf("%d %d", &position, &e);if (Insert(L, position, e)) {printf("OK\n");PrtList(L);} else {printf("ERROR\n");}printf("please input (position) to delete:");scanf("%d", &position);if (Delete(L, position, &e)) {printf("OK\n");PrtList(L);} else {printf("ERROR\n");} }

4 運行結果

總結

以上是生活随笔為你收集整理的顺序表Sqlist.cpp的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。