c++数据结构顺序表、单链表、查找的代码

更新时间:2024-05-02 12:39:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

顺序表

#include using namespace std; template void ins_sq_LList(T*v,int m,int*n,int i,T b) {int k; if(*n==m) {cout<<\ if(i>*n)i=*n+1; if(i<1)i=1; for(k=*n;k>=i;k--) v[k]=v[k-1]; v[i-1]=b; *n=*n+1; return; }

#include using namespace std; template class sq_LList {private: int mm; int nn; T * v; public: sq_LList(){mm=0;nn=0;return;} sq_LList(int);

void prt_sq_LList(); int flag_sq_LList();

void ins_sq_LList(int,T); void del_sq_LList(int); };

template

sq_LList(T)::sq_LList(int m) {mm=m;

v=new T[mm]; nn=0; return; }

template

void sq_LList::prt_sq_LList() {int i;

cout<<\

for (i=0;i

单链表

template

void linked_LList::ins_linked_LList(Tx,Tb) {node*p,*q; p=new node; p->d=b;

if(head==null)

{head=p;p->next=null;return;} if(head->d==x)

{p->next=head;head=p;return;} q=head;

while((q->next!=NULL)&&(((q->next)->d)!=x)) q=q->next;

p->next=q->next;q->next=p; return; }

linked_Llist.h

#include using namespace std; template struct node {T d;

node*next: };

template class linked_LList {private:

node*head: public: linked_LList(); void prt_linked_LList(); void ins_linked_LList(T,T); int del_linked_LList(T); };

template

linked_LList::linked_LList() {head=NULL;return;} template

void linked_LList::prt_linked_LList() {node*p; p=head;

if(p==NULL){cout<<\空链表!\do{cout<d<next;

}while(p!=NULL); return; }

#include using namespace std; template struct node {T d;

node*next: };

//定义线性链表类 template class linked_LList {private:

node*head: public: linked_LList(); void prt_linked_LList(); void ins_linked_LList(T,T); int del_linked_LList(T); };

//建立空链表 template

linked_LList::linked_LList() {head=NULL;return;} //扫描输出链表中的元素 template

void linked_LList::prt_linked_LList() {node*p; p=head;

if(p==NULL){cout<<\空链表!\do{cout<d<next;

}while(p!=NULL); return; }

template

void linked_LList::ins_linked_LList(Tx,Tb) {node*p,*q; p=new node; p->d=b;

if(head==null)

{head=p;p->next=null;return;} if(head->d==x)

{p->next=head;head=p;return;} q=head;

while((q->next!=NULL)&&(((q->next)->d)!=x)) q=q->next;

p->next=q->next;q->next=p; return; }

查找

#include using namespace std; template class SL_List {private: int mm; int nn; T * v; public: SL_List(){mm=0;nn=0;return;} SL_List(int); int search_SL_List(T); int insert_SL_List(T); int delete_SL_List(T); void prt_SL_List(); friend SL_List operator + (SL_List &,SL_List &); }; template SL_List::SL_List(int m) {mm=m;

v=new T[mm]; nn=0; return; }

template int SL_List::search_SL_List(T x) {int i,j,k; i=1;j=nn; while(i<=j) {k=(i+j)/2;

if(v[k-1]==x)return(k-1); if(v[k-1]>x)j=k-1; else i=k+1; }

return(-1); }

template int SL_List::insert_SL_List(T x) {int k;

if(nn==mm)

{cout<<\上溢!\k=nn-1;

while(v[k]>x)

{v[k+1]=v[k];k=k-1;} v[k+1]=x; nn=nn+1; return(1); }

template int SL_List::delete_SL_List(T x) {int i,k;

k=search_SL_List(x) if(k>=0) {for(i=k;i

template void SL_List::prt_SL_List() {int i;

cout<<\ for(i=0;i SL_Listoperator+(SL_List&s1,SL_List&s2) {int k=0,i=0,j=0; SL_Lists; s.v=new T[s1.nn+s2.nn]; while((i

for(j=i;j

#include \ int main() {int k; double a[5]={1.5,5.5,2.5,4.5,3.5}; double b[7]={1.0,7.5,2.5,4.0,5.0,4.5,6.5}; SL_Lists1(20); SL_Lists2(30); for(k=0;k<5;k++) s1.insert_SL_List(a[k]); for(k=0;k<7;k++) s2.insert_SL_List(b[k]); cout<<\输出有序表对象s1:\ s1.prt_SL_List();

cout<<\输出有序表对象s2:\ s2.prt_SL_List(); SL_Lists3; s3=s1+s2;

cout<<\输出合并后的有序对象s3:\ s3.prt_SL_List();

s3.delete_SL_List(a[0]); s3.delete_SL_List(b[0]); s3.delete_SL_List(123.0); cout<<\输出删除后的有序表对象s3:\ s3.prt_SL_List(); return 0; }

本文来源:https://www.bwwdw.com/article/sk1g.html

Top