1. 程式人生 > >07、順序表的操作

07、順序表的操作

main type 6.0 函數聲明 功能 刪除! align size 一個

順序表的操作

一、從順序表中刪除具有最小值的元素

/*
	時間:2017年7月2日10:49:39
	功能:從順序表中刪除具有最小值的元素並將最後元素放於被刪除元素的位置,由函數返回被刪元素的值
*/
#include "stdio.h"
#include "string.h"
#include"stdlib.h"
#define maxSize 15											//顯式地定義表的長度
typedef int DataType;										//定義表元素的數據類型
typedef struct												//順序表的定義
{											
	DataType data[maxSize];									//靜態分配存儲表元素的一維數組
	int n;													//實際表元素個數
}SeqList;

int deleteMin(SeqList*, DataType* );					    //函數聲明

int main()
{
	SeqList L = {{11,21,3,41,31,21,4,6,8,7},10};			//順序表元素初始化
	DataType x;
	deleteMin(&L, &x);										//因為x的值會改變,故傳入調用函數的是地址									
	printf("被刪除的元素的值為:%d\n", x);

	printf("完成相應操作後的數組形式:\n");
	for(int i = 0; i < 9; i++)
		printf("%d\t",L.data[i]);							//此處L是結構體普通變量
	printf("\n");
	return 0;

}

int deleteMin(SeqList *L, DataType *x)						//此處用指針接住地址變量的值
{
	if(L->n == 0)
	{
		printf("表空不能刪除!\n");
		return 0;
	}
	int i, pos = 0;											//假定0號元素的值最小
	for(i = 2; i <= L->n; i++)								//循環,尋找具有最小值的元素,此處的L是結構體指針變量
		if(L->data[i-1] < L->data[pos])						//pos記憶當前具有最小值元素的位置
			pos = i-1;
		*x = L->data[pos];// L->n--; L->data[pos] = L->data[L->n];
		return 1;											//如果return的返回值返回到調用函數處,返回的值需要用一個變量進行存儲
}
/*
	總結:順序表中的所有元素既可以順序訪問也可以隨機訪問
	在VC++6.0中顯示的結果是:
	——————————————————————————————————
	被刪除的元素的值為:3
	完成相應操作後的數組形式:
	11      21      7       41      31      21      4       6       8
	——————————————————————————————————
*/

  

07、順序表的操作