1. 程式人生 > >數據結構—線性表的順序表示(1)

數據結構—線性表的順序表示(1)

練習 考研 存儲 reat 數據結構 來源 log eat pau

題目來源於王道2018數據結構考研復習指導線性表的綜合練習

編譯環境:VS2015

題目:從順序表中刪除具有最小值的元素(假設唯一),並由函數返回被刪元素的值。空出的位置由最後一個元素填補,若順序表為空,則顯示出錯信息並退出運行。

具體實現如下:

#include<stdio.h>
#include<stdlib.h>
#define initSize 50//定義線性表的初始長度
typedef int ElementType;

typedef struct {
    ElementType *data;//順序表的元素
    int length;//當前表的長度
    int
maxSize;//最大容量 }SeqList;//順序表的類型定義 //初始化表。構造一個空的線性表 void InitList(SeqList &L) { L.data = (ElementType*)malloc(sizeof(ElementType)*initSize);//分配存儲空間 L.length = 0;//設置順序表的長度為0 L.maxSize = initSize;//設置順序表的最大容量 } //創建線性表 void CreateList(SeqList &L,int n) { for (int i = 0;i < n;i++) { scanf_s(
"%d",&(L.data[i])); L.length = n; } } //刪除最小值 int RemoveMin(SeqList &L,int &value) { int pos = 0;//記錄最小值點的位置 if (L.length == 0) return 0; value = L.data[0]; for (int i = 1;i < L.length;i++) { if (L.data[i] < value) { value = L.data[i]; pos
= i; } } L.data[pos] = L.data[L.length - 1]; L.length--; return 1; } //顯示列表 void ShowList(SeqList L) { for (int i = 0;i < L.length;i++) { printf_s("%-3d",L.data[i]); } } int main() { int length,min; SeqList L; InitList(L); printf_s("輸入表的長度:"); scanf_s("%d",&length); printf_s("\n輸入初始值:"); CreateList(L,length); printf_s("\n初始的順序表的元素如下:"); ShowList(L); RemoveMin(L,min); printf_s("\n刪除最小值後的順序表的元素如下:"); ShowList(L); system("pause"); return 0; }

測試結果截圖:

技術分享

數據結構—線性表的順序表示(1)