亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 新建 文本文檔.txt

?? 這是個數據結構的綜和算法。包函了數據結構里所有的算法
?? TXT
字號:
我也來個數據結構綜合
大家請給挑挑錯誤,找找不足吧,謝謝各位
#include<iostream.h>
#include<stdlib.h>
int whatdo1()//總菜單
{
 int n;
 cout<<"你想做什么?"<<endl;
 cout<<"創建鏈表   1"<<endl;
 cout<<"創建二叉樹 2"<<endl;
 cout<<"圖的遍歷   3"<<endl;
 cout<<"數據查找   4"<<endl;
 cout<<"數據排序   5"<<endl;
 cout<<"退出       0"<<endl;
 cin>>n;
 return n;
}
int whatdo2()//鏈表輸出插入刪除
{
 int n;
 cout<<"鏈表輸出、插入、刪除"<<endl;
 cout<<"鏈表輸出  1"<<endl;
 cout<<"鏈表插入  2"<<endl;
 cout<<"鏈表刪除  3"<<endl;
 cin>>n;
 return n;
}
int whatdo3()//二叉樹遍歷
{
 int n;
 cout<<"二叉樹排列順序"<<endl;
 cout<<"先序          1"<<endl;
 cout<<"中序          2"<<endl;
 cout<<"后序          3"<<endl;
 cout<<"葉子及節點數  4"<<endl;
 cin>>n;
 return n;
}
int whatdo4()//排序
{
 int n;
 cout<<"數據排序!"<<endl;
 cout<<"快速排序  1"<<endl;
 cout<<"冒泡排序  2"<<endl;
 cout<<"選擇排序  3"<<endl;
 cout<<"插入排序  4"<<endl;
 cout<<"堆排序    5"<<endl;
 cout<<"數組輸出  6"<<endl;
 cin>>n;
 return n;
}
int whatdo5()
{
 int n;
 cout<<"選擇查找方式"<<endl;
 cout<<"數組查找       1"<<endl;
 cout<<"二叉排序樹查找 2"<<endl;
 cin>>n;
 return n;
}
int whatdo6()
{
 int n;
 cout<<"數組查找"<<endl;
 cout<<"順序查找  1"<<endl;
 cout<<"二分查找  2"<<endl;
 cout<<"數組輸出  3"<<endl;
 cin>>n;
 return n;
}
int whatdo7()
{
 int n;
 cout<<"深度優先遍歷 1"<<endl;
 cout<<"廣度優先遍歷 2"<<endl;
 cin>>n;
 return n;
}

/*以下為鏈表*/
typedef struct node//定義鏈表
{
 int data;
 struct node * next;
}listnode;
typedef listnode * linklist;
int getch()//輸入函數
{
 int a;
 cin>>a;
 return a;
}
void del(linklist head)  /*刪除一個結點*/
{ 
 linklist p,q;
 int a;
 if(head->next==NULL)
  cout<<"鏈表為空!"<<endl;
 else {
   cout<<"輸入刪除數據:";
   cin>>a;
   p=q=head->next;
   if(a==0)cout<<"查無此節點!"<<endl;
   else{
    if(head->next==NULL)cout<<"數據表為空"<<endl;
    else if (head->next->data==a)
     {
     p=head->next;
     head->next=p->next;
     free(p);
     cout<<"刪除完成!"<<endl;
     }
     else{ 
      while(p->next && p->next->data!=a)
          p=p->next;
      if(p->next==NULL)cout<<"查無此節點!"<<endl;
      else {  q=p->next;
           p->next=q->next;
        free(q);;
        cout<<"刪除完成!"<<endl;
       }
      } 
    }
 }
}

void insertnode(linklist head)//插入
{
 linklist p,s;
 int i=2,m,n;
 cout<<"輸入插入數據和位置:";
 cin>>n>>m;
 p=head;
 while(p->next!=NULL && p->data!=m)
  p=p->next;
 if(p->data==m)
  cout<<"鏈表中有此節點,數據重復,不能插入!!!"<<endl;
 else{
   p=head;
   s=(linklist)malloc(sizeof(node));
   s->data=m;
   while(i<n && p)
   {
    p=p->next;
    i++;
   }
   if(!p)
   {
    cout<<"無此節點!新節點插入鏈表尾!"<<endl;
    p=head;
    while(p->next!=NULL)
     p=p->next;
    p->next=s;
    cout<<"插入完成!"<<endl;
   }
   else
   {
    s->next=p->next;
    p->next=s;
    cout<<"插入完成!"<<endl;
   }
  }
}
void shownode(linklist head)//輸出鏈表
{
 linklist p;
 if(head->next==NULL)
  cout<<"鏈表為空!"<<endl;
 else
 {
  p=head->next;
  while(p)
  {
   cout<<p->data<<" ";
   p=p->next;
  }
  cout<<endl;
 }
}
void crsc(int n,linklist head)//插入刪除函數
{
 switch(n)
 {
  case 1:shownode(head);break;
  case 2:insertnode(head);
      break;
  case 3:del(head);
      break;
 }
}

linklist createlist( )//創建鏈表
{
 int ch;
 int n;
 char w='y'; 
 cout<<"鏈表元素為整型,輸入0結束!"<<endl;
 linklist head=(linklist)malloc(sizeof(listnode));
 listnode *s,*r;
 r=head;

 while((ch=getch())!=0)
 {
  s=(listnode*)malloc(sizeof(listnode));
  s->data=ch;
  r->next=s; 
  r=s;
 }
 r->next=NULL;
 while(w=='y' || w=='Y')
 {
  n=whatdo2();
  crsc(n,head);
  cout<<"是否繼續插入或刪除(y/n):";
  cin>>w;
 }
 return head;
}
/*以下為二叉樹*/


typedef struct list//定義二叉樹
{
 int data;
 struct list * lchild; 
 struct list * rchild;
}tree;
typedef tree * tr;
int yz(tr p)
{
 int m=1,n=0;
 if(p->lchild==NULL&& p->rchild==NULL)
  return m;
 else m++;
 if(p->lchild==NULL)
  n=yz(p->rchild);
 if(p->rchild==NULL)
  m=yz(p->lchild);
 return m+n;
}
void xian(tr p)//先序
{
 if(p)
 {  
  cout<<p->data<<" ";
  xian(p->lchild);
  xian(p->rchild);
 }
}
int num(tr p)//計算節點個數
{
 static int m=0;
 if(p)
 {  
  m++;
  num(p->lchild);
  num(p->rchild);
 }
 return m;
}
void mid(tr p)//中序
{
 if(p)
 {
  mid(p->lchild);
  cout<<p->data<<" ";
  mid(p->rchild);
 }
}
void late(tr p)//后序
{
 if(p)
 {
  late(p->lchild);
  late(p->rchild);
  cout<<p->data<<" ";
 }
}
void shuenxu(int n,tr p)//選擇二叉樹遍歷方式
{
 int m,k;
 switch(n)
  {
  case 1:xian(p);break;
  case 2:mid(p);break;
  case 3:late(p);break;
  case 4:m=yz(p);
      k=num(p);
      cout<<"葉子數為"<<m<<endl;
      cout<<"節點數為"<<k;
      break;
  }
 cout<<endl;
}
void a(tr p)//二叉樹遍歷
{
 int n;
 char w='y';
 while(w=='y' || w=='Y')
 {
  n=whatdo3();
  shuenxu(n,p);
  cout<<"是否繼續查看其他順序(y/n):";
  cin>>w;
 }
}
tr create()//創建二叉樹
{
 tr p;
 char m;
 p=(tr)malloc(sizeof(tree));
 p->lchild=NULL;
 p->rchild=NULL;
 cout<<"輸入節點內的數據:";
 cin>>p->data;
 cout<<"請問"<<p->data<<"節點是否有左子樹(y/n)?";
 cin>>m;
 if(m=='y' || m=='Y')
  p->lchild=create();
 cout<<"請問"<<p->data<<"節點是否有右子樹(y/n)?";
 cin>>m;
 if(m=='y' || m=='Y')
  p->rchild=create();
 return p;
}
/*以下為圖*/
char geta()
{
 char m;
 cout<<"輸入一個頂點:";
 cin>>m;
 return m;
}
void showa(int edges[][100],int n)
{
 int i,j;
 for(i=0;i<n;i++)
 {
  for(j=0;j<n;j++)
   cout<<edges[i][j]<<" ";
  cout<<endl;
 }
}
typedef enum{FALSE,TRUE} Boolean;
Boolean visited[100];
void DFSM(char vexs[],int edges[100][100],int i,int n)
{
 int j;
 cout<<vexs[i];
 visited[i]=TRUE;
 for(j=0;j<n;j++)
  if(edges[i][j]==1 && !visited[j])
   DFSM(vexs,edges,j,n);
}

void DFST(char vexs[],int edges[100][100],int n)
{
 int i;
 for(i=0;i<n;i++)
  visited[i]=FALSE;
 for(i=0;i<n;i++)
  if(!visited[i])
   DFSM(vexs,edges,i,n);
 cout<<endl;
}
void createmgragh()
{
 int edges[100][100]={0};
 char vexs[100],l='y';
 int e,n,i,j,k,p;
 cout<<"輸入頂點數:";
 cin>>n;
 cout<<"輸入邊數:";
 cin>>e;
 for(i=0;i<n;i++)
  vexs[i]=geta();
 for(i=0;i<n;i++)
  for(j=0;j<n;j++)
   edges[i][j]=0;
 for(k=0;k<e;k++)
 {
  cout<<"輸入邊號i、j:";
  cin>>i>>j;
  edges[i-1][j-1]=1;
  edges[j-1][i-1]=1;
 }
 cout<<"領接鋸陣為:"<<endl;
 showa(edges,n);
 while(l=='y' || l=='Y')
 {
  p=whatdo7();
  switch(p)
  {
  case 1:DFST(vexs,edges,n);
  //case 2:bfst();
  }
  cout<<"是否繼續其他遍歷(y/n):";
  cin>>l;
 }
}

/*以下為查找*/


void show(int c[],int high)
{
 int i;
 for(i=0;i<high;i++)
  cout<<c[i]<<" ";
 cout<<endl;
}
int sort(int a[],int n,int k)//順序查找
{
 int i,m=-1;
 for(i=0;i<n;i++)
  if(a[i]==k)
   m=i;
 return m;
}
int cz(int a[],int m,int n,int k)//折半查找
{
 int mid,p=-1;
 if(m<=n)
 { 
  mid=(m+n)/2;
  if(a[mid]==k)
   p=mid;
  if(a[mid]>k)
   p=cz(a,m,mid-1,k);
  if(a[mid]<k)
   p=cz(a,mid+1,n,k);
  }        
 return p;
}
//定義二叉排序樹
void in(tr *t,int k)
{
 tree *f,*p,*q=*t;
 p=(tr)malloc(sizeof(tree));
 p->data=k;
 p->lchild=p->rchild=NULL;
 if(*t==NULL)
  *t=p;
 else
 {
  while(q)
  {
   if(q->data==k)
    cout<<"樹中有此數據,無須插入!"<<endl;
   else
   {
    f=q;
    q=(k<q->data)?q->lchild:q->rchild;
   }
  }
   if(k<f->data)
    f->lchild=p;
   else f->rchild=p;
 }
}
tr chzh(tr t,int k)//二叉排序樹查找
{
 if(t==NULL || k==t->data)
  return t;
 if(k<t->data)
  return chzh(t->lchild,k);
 else
  return chzh(t->rchild,k);
}
void ecs(tr t)//查找函數
{
 char w='y';
 tr p;
 int k;
 xian(t);
 while(w=='y' || w=='Y')
 {
  cout<<"輸入查找數據:";
  cin>>k;
  p=chzh(t,k);
  if(p==NULL)
   cout<<"無此數據!!!"<<endl;
  else cout<<p->data<<endl;
  cout<<"是否繼續查找(y/n):";
  cin>>w;
 }
}
tr createtree()//創建二叉排序樹
{
 tr t=NULL;
 int k;
 cout<<"輸入二叉樹的數據,輸入0結束!"<<endl;
 cin>>k;
 while(k!=0)
 {
  in(&t,k);
  cin>>k;
 }
 return t;
}
void sxcz(int k,int a[],int n,int m)//向量查找函數
{
 int x,p;
 switch(k)
 {
 case 1:cout<<"輸入查找數據:";
     cin>>x;
     p=sort(a,m,x);
     if(p==-1)
      cout<<"無此數據!!!"<<endl;
     else cout<<"查找數據在數組的第"<<p+1<<"位上!"<<endl;
     break;
 case 2:cout<<"輸入查找數據:";
     cin>>x;
     p=cz(a,n,m,x);
     if(p==-1)
    cout<<"無此數據!!!"<<endl;
     else cout<<"查找數據在數組的第"<<p+1<<"位上!"<<endl;
     break;
 case 3:show(a,m);break;
 }
}
//以下為排序
//void in(int a[],int n)//直接插入排序
void insertsort(int a[],int m)
{
 int i,j,x;
 for(i=1;i<m;i++)
  if(a[i]<a[i-1])
  {
   x=a[i];
   j=i-1;
   do
   {
    a[j+1]=a[j];
    j--;
   }while(x<a[j]);
   a[j+1]=x;
  }
 show(a,m);
}
void bubblesort(int a[],int n)//冒泡排序
{
 int i,j,x;
 for(i=0;i<n;i++)
  for(j=n-2;j>=i;j--)
   if(a[j+1]<a[j])
   {
    x=a[j+1];
    a[j+1]=a[j];
    a[j]=x;
   }
 show(a,n);
}
int partition(int a[],int i,int j)//快速排序
{
 int pivot=a[i];
 while(i<j)
 {
  while(i<j && a[j]>=pivot)
   j--;
  if(i<j)
   a[i++]=a[j];
  while(i<j && a[i]<=pivot)
   i++;
  if(i<j)
   a[j--]=a[i];
 }
 a[i]=pivot;
 return i;
}
void quicksort(int a[],int m,int n)//快速排序
{
 int pivotpos;
 if(m<n)
 {
  pivotpos=partition(a,m,n);
  quicksort(a,m,pivotpos-1);
  quicksort(a,pivotpos+1,n);
 }
}
void selectsort(int a[],int n)//選擇排序
{
 int i,j,k,x;
 for(i=0;i<n;i++)
 {
  k=i;
  for(j=i+1;j<n;j++)
   if(a[j]<a[k])
    k=j;
  if(k!=i)
  {
   x=a[i];
   a[i]=a[k];
   a[k]=x;
  }
 }
 show(a,n);
}
void heapify(int a[],int low,int high)//堆的篩選
{
 int large;
 int temp=a[low];
 for(large=2*low;large<=high;large=large*2)
 {
  if(large<high && a[large]<a[large+1])
   large++;
  if(temp>=a[large])
   break;
  a[low]=a[large];
  low=large;
 }
 a[low]=temp;
}
void buildheap(int a[],int n)//堆的建立
{
 int i;
 for(i=n/2-1;i>=0;i--)
  heapify(a,i,n);
}
void heapsort(int a[],int n)//堆排序
{
 int i,x;
 buildheap(a,n);
 for(i=n-1;i>0;i--)
 {
  x=a[0];
  a[0]=a[i];
  a[i]=x;
  heapify(a,0,i-1);
 }
 show(a,n);
}
void czpx(int n,int c[],int low,int high)//排序函數
{
 switch(n)
 {
 case 1:quicksort(c,low,high);
     show(c,high);
     break;
 case 2:bubblesort(c,high);
     break;
 case 3:selectsort(c,high);break;
 case 4:insertsort(c,high);break;
 case 5:heapsort(c,high);break;
 case 6:cout<<"數組輸出"<<endl;
     show(c,high);
     break;
 }
}
void shuzu(int p)//創建數組
{
 int a[100];
 char w='y';
 int m=0,x,n,low=0,k;
 cout<<"輸入數組數據,輸入0結束!"<<endl;
 cin>>x;
 while(x!=0)
 {
  a[m]=x;
  cin>>x;
  m++;
 }
 k=p;
 if(k==2)
 {
   while(w=='y' || w=='Y')
  {
   n=whatdo4();
   czpx(n,a,low,m);
   cout<<"是否繼續其他的排序(y/n):";
   cin>>w;
  }
 }
 if(k==1)
 {
   while(w=='y' || w=='Y')
  {
   n=whatdo6();
   sxcz(n,a,low,m);
   cout<<"是否繼續其他的查找(y/n):";
   cin>>w;
  }
 }
}
void cz()
{
 int n,m=1;
 tr p;
 n=whatdo5();
 switch(n)
 {
 case 1:shuzu(m);break;
 case 2:p=createtree();
     ecs(p);
     break;
 }
}
/*領接鋸陣*/

/*主函數*/

void main()
{
cout<<"*******************************************************************************"<<endl;
cout<<"*                        歡迎使用數據結構綜合應用系統                         *"<<endl;
cout<<"*                                                                             *"<<endl;
cout<<"*                               WELCOME USE                                   *"<<endl;
cout<<"*******************************************************************************"<<endl;

 int n,m=2;
 linklist head;
 tr p;
 n=whatdo1();
 while(n!=0)
 {
  switch(n)
  {
  case 1:head=createlist();break;
  case 2:p=create();a(p);break;
  case 3:createmgragh();break;
  case 4:cz();break; 
  case 5:shuzu(m);break;
  }
  n=whatdo1();
 }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品 日产精品 欧美精品| 欧美高清视频在线高清观看mv色露露十八 | 精品国产制服丝袜高跟| 欧美变态凌虐bdsm| 欧美国产一区二区在线观看| 国产精品成人在线观看| 亚洲一区二区高清| 韩国av一区二区三区在线观看| 国产一区二区三区日韩| 91日韩在线专区| 欧美日韩国产成人在线91| 欧美成人国产一区二区| 中文字幕一区二区在线播放| 午夜精品久久久久久久99樱桃| 国产主播一区二区三区| www.日韩在线| 欧美乱妇20p| 中文字幕巨乱亚洲| 亚洲成人精品一区| 国产福利91精品| 91官网在线观看| 精品美女在线播放| 亚洲免费观看在线视频| 加勒比av一区二区| 91高清在线观看| 国产午夜精品一区二区 | 色综合久久中文综合久久牛| 91精品国产综合久久久蜜臀粉嫩| 日本一区二区三区在线不卡| 亚洲大片在线观看| 成人理论电影网| 91精品国产91久久久久久一区二区 | 亚洲综合在线免费观看| 国产专区欧美精品| 欧美日韩aaaaa| 亚洲视频在线观看一区| 久久成人av少妇免费| 欧美亚洲尤物久久| 国产精品亲子伦对白| 日韩不卡一区二区| 91丝袜呻吟高潮美腿白嫩在线观看| 日韩一区二区三区电影在线观看| 国产精品传媒入口麻豆| 国产在线不卡视频| 欧美日韩一区二区在线观看视频 | 成人黄色在线视频| 欧美成人激情免费网| 亚洲图片有声小说| 99久久99久久久精品齐齐| 欧美mv日韩mv亚洲| 婷婷综合久久一区二区三区| 91亚洲精品乱码久久久久久蜜桃| 精品sm捆绑视频| 日韩经典一区二区| 欧美色图激情小说| 亚洲精品中文字幕在线观看| 国产成人免费在线视频| 精品少妇一区二区三区| 日韩电影在线看| 欧美在线色视频| 综合激情网...| 国产一区二区三区综合| 日韩女同互慰一区二区| 亚洲一区二区三区四区的| 91在线观看成人| 成人免费一区二区三区视频| 成人激情免费网站| 国产精品久久精品日日| 粉嫩aⅴ一区二区三区四区五区| 2020国产精品久久精品美国| 麻豆91在线看| 日韩一区二区三区视频在线| 日本亚洲欧美天堂免费| 欧美精品v日韩精品v韩国精品v| 亚洲黄色免费电影| 色婷婷精品大视频在线蜜桃视频| 国产精品二区一区二区aⅴ污介绍| 国产乱子轮精品视频| 久久久亚洲精品石原莉奈| 免费成人在线观看| 日韩欧美国产成人一区二区| 麻豆成人久久精品二区三区小说| 精品久久久久久无| 蜜桃av一区二区三区电影| 日韩小视频在线观看专区| 琪琪久久久久日韩精品| 欧美一区二区三区播放老司机| 亚洲va欧美va天堂v国产综合| 欧美日韩一区二区三区四区五区| 亚洲成人动漫一区| 91精品国产综合久久久久久 | 91精品国产入口| 奇米888四色在线精品| 91精品国产91久久久久久一区二区| 青草av.久久免费一区| 日韩欧美一卡二卡| 国产永久精品大片wwwapp| 久久一夜天堂av一区二区三区| 国产精品18久久久久久久久久久久 | **欧美大码日韩| 91国偷自产一区二区开放时间 | 色视频一区二区| 午夜精品福利一区二区三区av| 欧美一区二区三区在线观看视频| 久久国产精品99精品国产| 久久久91精品国产一区二区三区| 国产精品18久久久久久久久 | 在线观看欧美黄色| 日本不卡的三区四区五区| 日韩三级中文字幕| 国产aⅴ综合色| 亚洲女同ⅹxx女同tv| 欧美欧美午夜aⅴ在线观看| 久久av老司机精品网站导航| 欧美—级在线免费片| 欧美主播一区二区三区美女| 奇米色一区二区| 久久精子c满五个校花| 国产在线播放一区| 亚洲色图欧洲色图婷婷| 4438x成人网最大色成网站| 国产一区在线观看麻豆| 亚洲欧美区自拍先锋| 日韩一级高清毛片| 99久久精品免费观看| 日韩电影一区二区三区四区| 久久久国产午夜精品| 欧美在线不卡视频| 国产资源在线一区| 亚洲成a人片在线不卡一二三区 | 免费看欧美女人艹b| 国产精品国产三级国产aⅴ原创 | 精品午夜久久福利影院| 中文字幕一区二区三中文字幕| 欧美一级二级三级乱码| 99热精品国产| 韩国一区二区在线观看| 一二三四区精品视频| 国产日韩欧美一区二区三区综合| 欧洲一区二区av| 国产91精品入口| 美女尤物国产一区| 亚洲欧美日韩人成在线播放| 欧美变态口味重另类| 欧美三级日韩三级| 成人手机电影网| 蜜桃精品在线观看| 亚洲chinese男男1069| 国产精品免费av| 日韩一级高清毛片| 欧美色图在线观看| 不卡的av网站| 国产乱人伦偷精品视频免下载| 舔着乳尖日韩一区| 亚洲精品免费看| 国产精品无遮挡| 久久综合99re88久久爱| 欧美精品在线观看播放| eeuss鲁片一区二区三区| 日韩电影在线一区二区三区| 亚洲一区二区三区中文字幕在线| 中文字幕乱码一区二区免费| 精品国产麻豆免费人成网站| 欧美视频中文字幕| 91麻豆蜜桃一区二区三区| 国产一区二区三区四区五区美女| 奇米影视在线99精品| 亚洲精品久久嫩草网站秘色| 亚洲国产精华液网站w| 精品国产乱码久久久久久浪潮| 欧美美女喷水视频| 日本二三区不卡| 91丨九色porny丨蝌蚪| 国产伦精一区二区三区| 国产精品一区久久久久| 裸体一区二区三区| 天堂va蜜桃一区二区三区漫画版| 一区二区在线看| 亚洲激情在线播放| 亚洲黄色录像片| 亚洲午夜私人影院| 1024亚洲合集| 综合色天天鬼久久鬼色| 成人欧美一区二区三区1314| 自拍偷拍亚洲激情| 最好看的中文字幕久久| 亚洲欧美视频一区| 亚洲蜜桃精久久久久久久| 中文字幕制服丝袜一区二区三区 | 国产一区二区三区蝌蚪| 久久99国产精品尤物| 激情综合五月天| 国产综合色视频| 国产成人精品综合在线观看| 国产河南妇女毛片精品久久久| 国产精品996| 不卡的看片网站| 欧美午夜不卡视频| 69久久夜色精品国产69蝌蚪网| 欧美一区二区私人影院日本|