順序表的實現

2021-09-09 01:36:22 字數 2954 閱讀 2728

#include"iostream.h"

#include"string.h"

//順序表的定義

templateclass seqlist

t *data;

int maxsize;//最長度大

int last;//當前最後元素下標

public:

seqlist(int);

~seqlist()

delete data;

int length() const

return last+1;

int find(t &x);//查詢

int insert(t &x,int i);//插入

int remove(t &x);//刪除

void display();//列印

int isempty()

return last==-1;

int isfull()

return last==maxsize-1;

t get(int i)//獲取

if(i>last||i<0) {cout<<"位置異常"//順序表的實現

template

seqlist::seqlist(int sz)

if(sz>0)

maxsize=sz;

last=-1;

data=new t[maxsize];

if(data==null)

maxsize=0;

last=-1;

return;

template

int seqlist::find(t &x)

int i;

for(i=0;i<=last;i++)

if (data[i]==x)

return i;   

return -1;

template

int seqlist::insert(t &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

int seqlist::remove(t &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;

template

void seqlist::display()

for(int i=0;i<=last;i++)

coutclass student

public:

int id;

char name[20];

int year;

int score;

bool operator==(const student &);

//student類的實現

bool student::operator==(const student &s)//過載==運算子

if(this==&s)

return true;

if((id==s.id)&&(strcmp(name,s.name)==0)&&(year==s.year)&&(score==s.score))

return true;

else return false;

ostream& operator<<(ostream &os,student &s)//過載《運算子

osistream& operator>>(istream &is,student &s)//過載》運算子

cout<<"請輸入此學生的學號,姓名,入學年份,分數">s.id>>s.name>>s.year>>s.score;

return is;

//主函式

void main()

int i,j,k,m;

seqlists(10);

student s1,s2,s3,s4,s5,s6,s7,s8;

int flag=0;

while(flag==0)

cout<<"順序表的實現(模板類)"cin>>j;

switch(j)

case 1:

cin>>s1>>s2;

s.insert(s1,0);

s.insert(s2,1);

break;

case 2:

cin>>s3;

i=s.find(s1);

s.insert(s3,i+1);

cin>>s4;

s.insert(s4,i);

i=s.find(s2);

cin>>s5;

s.insert(s5,i+1);

break;

case 3:

s6=s.get(0);

s.remove(s6);

k=s.length();

s7=s.get(k-1);

s.remove(s7);

break;

case 4:

cout<<"請輸入您要查詢的記錄:";

cin>>s8;

m=s.find(s8);

if(m<0)

cout<<"不存在此記錄!";

else

cout<<"存在記錄:"

case 5:

s.display();

break;

case 6:

flag=1;

break;

default:

cout<<"沒有此命令!"<

順序表的實現

使用c 實現一下常用的資料結構,參考書為 資料結構 演算法與應用 c 語言描述 此次 為順序表,為了保證通用性採用模板機制,演算法本身沒有什麼難度,畢竟是基礎演算法,但是長時間不用c 一些高階特性和陷阱著實讓人難受。此次 共分三個檔案 1 sq list.h 實現順序表的結構和基本操作。2 excp...

順序表的實現

順序表很簡單,表裡面有個陣列,陣列中實際元素的個數 長度 lengthsqlcurrent,還有就是初始大小變數。可以解決約瑟夫環問題。最核心的兩個方法 刪除和插入,這兩個過程要移動元素。核心 package com.ibm.jzy.seqlist public class sqlist imple...

順序表的實現

順序表的操作 time limit 1000ms memory limit 65536k description 建立乙個順序表,然後在已建好的順序表上實現順序表插入和刪除等基本操作。最後輸出最終結果。input 有多組測試資料,每組資料由三部分組成。第一部分包含兩個整數n n 1000 和m m ...