第三週專案1 順序表的基本運算(3)
<pre class="cpp" name="code">/*
*Copyright (c) 2015,煙臺大學計算機學院
*All rights reserved.
*檔名稱:xianxingbiao.cpp
*作者:朱希康
*完成日期:2015年9月20日
*版本號:vc++6.0
*
*問題描述:順序表的基本運算
*輸入描述:無
*程式輸出:進行刪除後的運算結果
*/
#ifndef LIST_H_INCLUDED
#define LIST_H_INCLUDED
#define MaxSize 50
typedef int ElemType;
typedef struct
{
ElemType data[MaxSize];
int length;
} SqList;
void CreateList(SqList *&L, ElemType a[], int n);//用陣列建立線性表
void InitList(SqList *&L);//初始化線性表InitList(L)
void DestroyList(SqList *&L);//銷燬線性表DestroyList(L)
bool ListEmpty(SqList *L);//判定是否為空表ListEmpty(L)
void DispList(SqList *L);//輸出線性表DispList(L)
bool ListInsert(SqList *&L,int i,ElemType e);//插入資料元素ListInsert(L,i,e)
bool ListDelete(SqList *&L,int i,ElemType &e);//刪除資料元素ListDelete(L,i,e)#endif // LIST_H_INCLUDED
#endif
#include <stdio.h>
#include <malloc.h>
#include "xianxingbiao.h"
//用陣列建立線性表
void CreateList(SqList *&L, ElemType a[], int n)
{
int i;
L=(SqList *)malloc(sizeof(SqList));
for (i=0; i<n; i++)
L->data[i]=a[i];
L->length=n;
}
//初始化線性表InitList(L)
void InitList(SqList *&L) //引用型指標
{
L=(SqList *)malloc(sizeof(SqList));
//分配存放線性表的空間
L->length=0;
}
//銷燬線性表DestroyList(L)
void DestroyList(SqList *&L)
{
free(L);
}
//判定是否為空表ListEmpty(L)
bool ListEmpty(SqList *L)
{
return(L->length==0);
}
//輸出線性表DispList(L)
void DispList(SqList *L)
{
int i;
if (ListEmpty(L)) return;
for (i=0; i<L->length; i++)
printf("%d ",L->data[i]);
printf("\n");
}
//插入資料元素ListInsert(L,i,e)
bool ListInsert(SqList *&L,int i,ElemType e)
{
int j;
if (i<1 || i>L->length+1)
return false; //引數錯誤時返回false
i--; //將順序表邏輯序號轉化為物理序號
for (j=L->length; j>i; j--) //將data[i..n]元素後移一個位置
L->data[j]=L->data[j-1];
L->data[i]=e; //插入元素e
L->length++; //順序表長度增1
return true; //成功插入返回true
}
//刪除資料元素ListDelete(L,i,e)
bool ListDelete(SqList *&L,int i,ElemType &e)
{
int j;
if (i<1 || i>L->length) //引數錯誤時返回false
return false;
i--; //將順序表邏輯序號轉化為物理序號
e=L->data[i];
for (j=i; j<L->length-1; j++) //將data[i..n-1]元素前移
L->data[j]=L->data[j+1];
L->length--; //順序表長度減1
return true; //成功刪除返回true
}
#include "xianxingbiao.h"
//實現測試函式
int main()
{
SqList *sq;
InitList(sq);
ListInsert(sq, 1, 5);
ListInsert(sq, 2, 3);
ListInsert(sq, 1, 4);
DispList(sq);
return 0;
}
測試結果:
知識點總結:在這三個實驗中,從一個程式支架入手,通過對支架的不斷補充使程式更加完善、有更多的功能。而一個針對性強的主函式會使程式更加有效。
相關文章
- 第三週 專案1 順序表的基本運算
- 第三週專案2-建設“順序表”演算法庫演算法
- 第五週 專案1 建立順序棧演算法庫演算法
- 第八週 專案1-建立順序串的演算法庫演算法
- 第七週 專案一 建立順序環形佇列佇列
- 第八週 專案2-順序表演算法演算法
- C++ 運算子優先順序表C++
- 順序表
- 順序表的基本方法實現C語言版C語言
- java基礎(四) java運算順序的深入解析Java
- 隨筆:MySQL 普通3表join順序MySql
- 順序表應用5:有序順序表歸併
- 順序表應用6:有序順序表查詢
- 第3章 順序表的鏈式儲存
- javascript表示式中的運算順序簡單介紹JavaScript
- python運算子及優先順序順序Python
- 順序佇列基本操作佇列
- 順序表的堆排序排序
- 順序表的學習
- 順序表的實現
- 靜態順序表和動態順序表 對比
- Java類的基本執行順序Java
- 實驗二:順序表的基本操作實現及其應用
- 各類運算子和計算方法,優先順序
- js運算子優先順序及賦值運算var a = {n:1};var b = a;a.x = a = {n:2};JS賦值
- 第2章 順序表及其順序儲存
- Windows XP 指定啟動專案的順序(轉)Windows
- 大型專案開發: 標頭檔案順序
- 順序棧、鏈棧基本操作
- 四則運算第三次衝刺(專案完成)
- 資料結構c語言實現順序表基本操作資料結構C語言
- java運算子優先順序Java
- php運算子優先順序PHP
- Java實現順序表Java
- 關於JAVA中順序IO的基本操作Java
- 線性表的順序儲存-順序表,對“突然的自我”的否定,對自我的揚棄
- 四則運算專案
- 棧1: 順序儲存