鱼C论坛

 找回密码
 立即注册
查看: 2066|回复: 0

[技术交流] c++静态链表

[复制链接]
发表于 2019-12-15 12:04:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<iostream>
#define max 100
struct DOT
{
  char cur;
  int date;
};
class Table
{
  public:
      Table();
      int add(int i,int &e);
      int dete(int i, int &e);
      int play();
   private:
       DOT dot[max];
       int  size;
};
Table:: Table()
{
size=0;
dot[max-1].cur=0;
dot[max-1].date=0;
  for(int i=0;i<max-1;i++)
  {
   dot[i].cur=i+1;
   dot[i]. date=0;
  }
}
int Table:: add(int i,int &e)
{
   int k=max-1,d;
if(i<0||i>size+1||size==max-2)
{
  std::cout<<"出现错误(可能你插的位置有误或表已满)\n";
  return -1;
}
dot[dot[0].cur]. date=e;
d=dot[0].cur;
dot[0]. cur=dot[dot[0].cur].cur;
for(int j=1;j<=i-1;j++)
{
  k= dot[k].cur;
}


     dot[d]. cur=dot[k]. cur;
     dot[k]. cur=d;
      size++;
     return 0;
}
int Table::dete(int i, int &e)
{
  int k=max-1,d;
   if(i<0||i>size)
   {
  std::cout<<"出现错误(可能你删除的位置有误)\n";
  return -1;
   }
   for(int j=1;j<=i-1;j++)
   {
      k=dot[k]. cur;
   }
   e=dot[dot[k].cur]. date;
   d=dot[0].cur;
   dot[0].cur=dot[k].cur;
   dot[k]. cur=dot[dot[k].cur].cur;
   dot[dot[0].cur].cur=d; size--;
   return 0;
}
int Table::play()
{
  int k=max-1;
if(size==0){ std::cout<<"当前列表为空";return -1;}
  std::cout<<"当前表中一共有"<<size<<"数据"<<std::endl;
  std::cout<<"分别………如下:\n";
    for(int i=0;i<size;i++)
  {
  k=dot[k]. cur;
std::cout<<dot[k]. date<<" ";
  }
std::cout<<std::endl;
  return 0;
}
int option(Table &table)
{
char c;int i;int e;
while(1)
{
std::cout<<"请输入指令(1为增加,2为删除,3为显示)\n";
std:: cin>>c;
std::cin. ignore(1);
  switch(c)
   {
      case '1':   std::cout<<"请输入数据:\n";
                std::cin>>e;
                std::cin. ignore(1);
                std::cout<<"请输入位置:\n";
                std::cin>>i;
                std::cin. ignore(1);
               table.add(i,e);
               break;
      case '2':   std::cout<<"请输入删除位置:\n";
                std::cin>>i;
                std::cin. ignore(1);
              table. dete(i,e);
               break;
      case '3': table.play();
               break;
      default: std::cout<<"你输入指令有误\n请重新输入\n";  break;
   }
}
  return 0;
}

int main()
{
    Table table;
     int e=12;
    option(table);
return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-28 00:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表