list c++template

以一個現成的模板實現了線性表的順序結構實現,VC6.0調試OK

請大家以開源的方式來完善這個算法 ,以跟貼方式來添加代碼

請大家往這個下面繼續添加完整的可以運行的線性表的順序結構實現代碼

/*

線性表的順序結構實現,數組C++實現法,VC調試OK
線性表可以用順序結構(是用數組線性表來實現)來實現,也可以用鏈式結構來實現。
我們以順序結構為例:
?線性表的基本的操作:
(1)創建線性表
(2)初始化線性表??SeqList()
(3)插入元素???Insert(Type& x ,int i)
(4)刪除元素???Remove(Type& x)?
(5)查找元素???
按位置查找對象??Get(int i)
按對象查找位置??Find(Type& x)
(6)計算表長度??Length();

擴展功能:
順序表滿判斷??IsFull()
順序表空判斷??IsEmpty()??
輸出順序表的數據?PrintList()
輸入順序表的數據?InputList()
判斷x是否在表中??IsIn(Type& x)
尋找x的后繼???Next(Type& x)
尋找x的前驅???Prior(Type& x)
合并兩個數組??Union(SeqList<Type>& LA,SeqList<Type>& LB)
求兩個數組的交集


注意:
(1)插入元素時要把插入位置后的所有元素“從后往前”各向后移動一個位置。
(2)刪除元素時要把刪除位置后的所有元素“從前往后”各向前移動一個位置。

*/
//SeqList.h
#ifndef SEQLIST_H
#define SEQLIST_H

template< class Type> class SeqList
{
public:?
SeqList(int MaxSize=6);?//構造函數定義和實現?
~SeqList() {delete []data; }??//析構函數定義和實現?
int Length() const {return last+1;}?//計算表長度定義和實現?
Type Get(int i)??????      //取第i個元素的值
{?if (i<0||i>last)
??cerr<<"out of range...";
?else
?return data[i];
}
int Find(Type& x) const;???//定位函數:找x在表中的位置
int Insert(Type& x ,int i);???//插入x在表中第i個位置處?
int Remove(Type& x);????//刪除x
//新添加功能
int Next(Type& x);?????//尋找x的后繼?
int Prior(Type& x);?????//尋找x的前驅?
int IsEmpty() {return last==-1;}???//判斷順序表是否為空,空則返回1;否則返回0?
int IsFull() {return last==MaxSize-1;}? ?//判斷順序表滿否,滿則返回1;否則返回0?
int IsIn(Type& x);?????//判斷x是否在表中?
void Union(SeqList<Type>& LA,SeqList<Type>& LB);??//合并LA,LB,重復元素只留一下?
void Intersection(SeqList<Type>& LA,SeqList<Type>& LB);?//求LA,LB中的共有元素?
void PrintList();?????//輸出順序表的數據?
void InputList();?????//輸入順序表的數據

private:?
Type* data;???????//存放順序表的數組?
int MaxSize;??????//順序表最大可容納項數?
int last;???????//順序表當前是已存表項的最后位置
};
//構造函數,通過描寫參數sz定義數組的長度。?
template <class Type> SeqList<Type>::SeqList(int sz)
{
?if(sz>0)
??MaxSize=sz;
?else
??MaxSize=6;
?last=MaxSize - 1;
?data=new Type[MaxSize];

}

?

//定位,找x在表中位置 ,若查找成功,函數 返回表項的位置,否則函數返回-1?
template <class Type> int SeqList<Type>::Find(Type& x) const
{?
int i=0;?
while(i<=last&&data[i]!=x)??
i++;?
if(i>last)??
return -1;?
else??
return i;
}

//判斷x是否在表中
template <class Type> int SeqList<Type>::IsIn(Type& x)
{?
int i=0,found=0;?
while(i<==last&&!found)??
if(data[i]!=x)???
i++;??
else???
found=1;?
return found;}

//插入x在表中第i個位置處。函數返回插入是否成功的信息,若為0則插入不成功。
template <class Type> int SeqList<Type>::Insert(Type& x,int i)
{?
if(i<0||i>last+1||last==MaxSize-1)?
return 0;?
else?
{
last++;??
for(int j=last;j>i;j--)???
data[j]=data[j-1];??
data[i]=x;??
return 1;?}
}
template <class Type> int SeqList<Type>::Remove(Type& x)
{
int i=Find(x);?
if(i>=0)?
{??
last--;??
for(int j=i;j<=last;j++)???
data[j]=data[j+1];??
return 1;?
}?
return 0;
}
//尋找x的后繼數據
template <class Type> int SeqList<Type>::Next(Type& x)
{?
if(i>=0&&i<last)??
?return i+1;?
else ??
?return -1;
}
//尋找x的前驅數據
template <class Type> int SeqList<Type>::Prior(Type& x)
{?
int i=Find(x);?
if(i>0&&i<=last)
?return i-1;?
else ??
?return -1;
}

//合并順序表LA與LB,重復元素只留一下。這個值得深入研究
template <class Type> void SeqList<Type>::Union(SeqList<Type>& LA,SeqList<Type>& LB)
{??
int n=LA.Length();?
int m=LB.Length();?
for(int i=0;i<m;i++)?
?{??
?Type x=LB.Get(i);??
?int k=LA.Find(x);??
?if(k==-1)??
??{???
???LA.Insert(n+1,x);???
???n++;??
??}?
?}
}
//求順序表LA與LB中的共有元素,其實也是尋找交集元素
template <class Type> void SeqList<Type>::Intersection(SeqList<Type> &LA,SeqList<Type>& LB)
{?
int n=LA.Length();?
int m=LB.Length();?
int i=0;?
while(i<n)?
?{??
?Type x=LA.Get(i);??
?int k=LB.Find(x);??
?if(-1==k)??
?{
??LA.Remove(x);???
??n--;??
?}??
?else???
??i++;?
?}
}

//自己寫的輸出數據方法?
template <class Type> void SeqList<Type>::PrintList()
{
int l=Length()-1;?
for(int i=0;i<l;i++)??
cout<<"list"<<i<<"= "<<data[i]<<endl;;
}
//自己寫的輸入數據方法?
template <class Type> void SeqList<Type>::InputList()
{?
int l=Length()-1;?
for(int i=0;i<l;i++)?
{
cout<<"enter data["<<i<<"]:";??
cin>>data[i];??
}}
#endif

//調用程序

//seqlist.cpp
/* 測試主程序 * *?- */
#include <iostream.h>
#include "SeqList.h"
//const defaultSize=8;
void main()
{
SeqList<int> Intseqlist(8);??
cout<<"Intseqlist.length:"<<Intseqlist.Length()<<endl;?
cout<<"未初始化的數據是沒有規則的如下:"<<endl;??
Intseqlist.PrintList();??

cout<<"輸入int到數組:"<<endl;??
Intseqlist.InputList();?

cout<<"新的數據:"<<endl;
Intseqlist.PrintList();

//add check get(x) code
int tv;
cout<<"Get(x):enter a int:";
cin>>tv;
cout<<"get(x)="<<Intseqlist.Get(tv)<<endl;

//請各位多寫測試代碼,爭取把上面的類的功能都用一次
//這就是一個簡單的程序測試工程師的一部分工作內容

}

//歡迎大家從這個線性表的數組實現代碼中更加完美

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/449608.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/449608.shtml
英文地址,請注明出處:http://en.pswp.cn/news/449608.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

聊聊composer.lock

composer.lock 即鎖定文件 其中會存在項目中所有的依賴包&#xff0c;方便協同合作時都得到同樣的以來版本 composer install 命令從當前目錄讀取 composer.json 文件&#xff0c;處理依賴關系&#xff0c;并把依賴安裝到 vendor 目錄下。 如果當前目錄下存在 composer.lock 文…

如何保證MongoDB的安全性?

上周寫了個簡短的新聞《MongoDB裸奔&#xff0c;2億國人求職簡歷泄漏&#xff01;》&#xff1a; 根據安全站點HackenProof的報告&#xff0c;由于MongoDB數據庫沒有采取任何安全保護措施&#xff0c;導致共計202,730,434份國人求職簡歷泄漏。然后很多人評論說MongoDB躺槍了。 …

LXC是什么

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。Linux Container容器是一種內核虛擬化技術&#xff0c;可以提供輕量級的虛擬化&#xff0c;以便隔離進程和資源。LXC為Linux Container的簡…

C++ 標準庫 vector list map使用方法

[cpp] view plaincopyList&#xff08;鏈表&#xff09; List將元素按順序儲存在鏈表中. 與 向量(vectors)相比, 它允許快速的插入和刪除&#xff0c;但是隨機訪問卻比較慢.list對象函數 assign() 給list賦值 back() 返回最后一個元素 begin() 返回指向第一個元素的迭代器…

導航守衛

導航守衛 to 準備跳轉到哪個頁面 from 從哪個頁面中離開 next 函數 全局守衛 router.beforeEach((to,from,next) > {if(to.path /login || to.path /register){    next();}else{    alert(先登錄)    next(/login)} }) 組件守衛 data () {  return{   …

Django中使用Pagination的分頁范例源碼

將做工程過程重要的內容做個珍藏&#xff0c;下面代碼內容是關于Django中使用Pagination的分頁范例的代碼。 from django.core.paginator import Paginatorobjects [john, paul, george, ringo]p Paginator(objects, 2) p.count4p.num_pages2p.page_range[1, 2] page1 p.pag…

Docker:集裝箱式“運輸”在軟件上的實現

Docker是由PaaS提供商dotCloud在2013年年初創建的一款開源應用引擎&#xff0c;Docker可以自動將任何應用打包成輕量、可移植、自包涵的容器引擎。開發者構建的應用可以一次構建全平臺運行&#xff0c;包括本地開發機器&#xff0c;生產環境&#xff0c;虛擬機和云等。 Docker基…

CAMP選股

挑選五只股票&#xff1a;萬科A、中國平安、貴州茅臺、萬華化學和科大訊飛&#xff0c;然后我們以滬深300作為市場基準。import pandas as pd import tushare as ts # 獲取數據 pro ts.pro_api() wanke pro.daily(ts_code000002.SZ, start_date20170101) pingan pro.daily(t…

大二下周總結(三)

記錄時間第三周所花時間&#xff08;包括上課&#xff09;13h代碼行500博客量2所了解到的知識點html java-script java本周用在練習代碼的時間自己感覺還可以&#xff0c;由于在第二周課堂練習后覺得自己有許多不足&#xff0c;所以有了必須奮進的壓力。 除了編寫代碼能力的提高…

C讀寫ini文件

/* read/write ini file with c function file testini.c chinayaosir blog: http://blog.csdn.net/chinayaosir connect.ini [database] 此程序有些BUG 當ini文件不存在時&#xff0c;第一次建立connect.ini文件時&#xff0c; 在[database]前面會多一個空格. */ #include…

包含天,時,分,秒的倒計時

這個很基礎的東西寫的過程中出了很多小的錯誤&#xff0c;在此記錄一下。 原生的js。 結構&#xff1a; <p id"time"></p> js: <script>  var start new Date().getTime(); // 獲取開始時間  var end new Dat…

計算相關度

# 使用numpy import numpy as np R [0.01, 0.05, 0.02, -0.03] var1 np.var(R) std1 np.std(R) # # 使用pandas import pandas as pd R pd.Series([0.01, 0.05, 0.02, -0.03]) var2 R.var() std2 R.std() import pandas as pd import tushare as ts pro ts.pro_api() w…

如何使用Dockerfile構建鏡像

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 Dockfile是一種被Docker程序解釋的腳本&#xff0c;Dockerfile由一條一條的指令組成&#xff0c;每條指令對應Linux下面的一條命令。Doc…

今時今日,C還適合當下之所需么?

本文來源于我在InfoQ中文站翻譯的文章&#xff0c;原文地址是&#xff1a;http://www.infoq.com/cn/news/2013/01/C-Language 來自Couchbase的Damien Katz認為C依然是非常適合于后端編程的一門語言&#xff0c;然而有的開發者則覺得C有太多的瑕疵&#xff0c;他們支持C或是Java…

《吳軍.科技史綱60講》摘錄

本文由Markdown語法編輯器編輯完成&#xff0e; 《科技史綱60講》是吳軍老師最新開設的專欄名稱&#xff0c;該專欄主要是講解人類文明和科技發展史。吳軍老師在專欄的發刊詞《歷史總在重演&#xff0c;科技永遠向前》中提到&#xff0c;能量和信息是貫穿人類文明發展的兩條線索…

API Gateway——KONG簡單入門

一、簡介 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 Kong&#xff0c;是由Mashape公司開源的&#xff0c;基于Nginx的API gateway。 二、特點 可擴展&#xff1a;支持分布式 模塊化…

小程序 公眾號/h5相互跳轉-webview

小程序與h5的跳轉 前提小程序管理后臺配置域名白名單&#xff0c;并且h5頁面是嵌在小程序里面&#xff08;相互跳的前提條件&#xff09; 在業務域名中設置好訪問的h5地址 微信官方web-view 介紹地址 https://developers.weixin.qq.com/miniprogram/dev/component/web-view.ht…

十、eclipse快捷鍵大全

eclipse快捷鍵大全轉載于:https://www.cnblogs.com/zheaven/p/10541531.html

如何保證代碼的高質量?

代碼的高質量是軟件的靈魂&#xff0c;代碼 數據結構 算法&#xff0c; 而高質量的代碼 優良的變量、函數命名 優良的代碼結構、代碼層次結構 數據結構 算法。 時時刻刻想這上面的四點&#xff0c;你的代碼就會漸漸的上新臺階&#xff0c;老板不給你加工資還…

centos6.5 安裝 kong 網關

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 最近要求了解下kong網關&#xff0c;然后在網上一頓找&#xff0c;說實話&#xff0c;度娘的力量還是不行啊&#xff0c;找出來的那些跟…