⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 数据结构中的双链表问题
💻 CPP
字号:
#include "iostream.h"
#include "stdlib.h"
#include "conio.h"
#include "CListMZ.h"
#include "string.h"
#include "CListMZ.cpp"
#include "show.h"
#include "windows.h"

#define SHOW 30
void main()
{
	CListMZ <int> list;
    CShow show;
	int  strlen1=25;//"数据结构研究 功能演示平台"
	char str2[]="湖北汽车工业学院电系2005年数据结构双语班!    挑战极限,超越自我!    ";
	int  strlen2=strlen(str2);
	char * pstr1[24];
                    //012345678901234567890123456789012345678901234567890 
	char pstr[][49]={"●          数据结构研究 功能演示平台        ● ",//0
		             "┏━━━━━━━━━━━━━━━━━━━━━━┓",//1
		             "┃                  程序信息                  ┃",//2
                     "┠──────┬───────────────┨",//3
                     "┃  设计目的:│  实现表的有关操作            ┃",//4
	                 "┠──────┼───────────────┨",//5
                     "┃  程序功能:│  双链表的测试                ┃",//6
	                 "┠──────┼───────────────┨",//7*
                     "┃  指导教师:│  马春江老师                  ┃",//8
	                 "┠──────┼───────────────┨",//9
                     "┃  设计者:  │  马哲江                      ┃",//10
                     "┠──────┼───────────────┨",//11
				     "┃  设计日期:│  2005年3月31日               ┃",//12
				     "┠──────┴───────────────┨",//13
				     "┃  湖北汽车工业学院电系2005年数据结构双语班  ┃",//14
                     "┗━━━━━━━━━━━━━━━━━━━━━━┛",//15
	                 "┠──────┴───────────────┨",//16
	                 "┃                                            ┃",//17
	                 "┃          1: 用初始值来创建一个表           ┃",//18
                     "┃          2: 销毁一个表。                   ┃",//19
                     "┃          3: 确定表是空。                   ┃",//20
				     "┃          4: 获得表的长度。                 ┃",//21
				     "┃          5: 获得表的某位置的元素。         ┃",//22
					 "┃          6: 删除表中的数据。               ┃",//23
					 "┃          7: 插入数据到表中                 ┃",//24
                     "┃          8: 追加数据到表尾                 ┃",//25
					 "┃          9: 修改表中的数据                 ┃",//26
					 "┃          A: 显示表中的内容                 ┃",//27
				     "┃          0: 退出。                         ┃",//28
					 "┃                                            ┃",//29
				     "┃                                            ┃",//30
                     "┗━━━━━━━━━━━━━━━━━━━━━━┛"};//31
	char ch=' ',c;
	int  strlen0=strlen(pstr[0]);
	int number,number1,j,i,k,ii=17,kk=10;
	bool flag=true,flag1=true;
	for(i=0;i<16;i++)
		pstr1[i]=pstr[i];
	show.SetType(pstr1,16,CShow::SH_LTORLINE,10);
	show.Show();
	Sleep(1000);
	for(i=j=0;i<=SHOW+1;i++,j++)
	{
		if(i==7)
			i=16;
		pstr1[j]=pstr[i];
	}
	show.SetType(pstr1,j,CShow::SH_STATIC,10);	
	k=0;
	while(1)
	{
	    system("cls");
	    show.Show();
		Sleep(200);
		//*
        pstr[ii][5]=ch;
    	pstr[SHOW-1-ii+17][6]=ch;
		pstr[ii][42]=ch;
		pstr[SHOW-1-ii+17][41]=ch;
		if(flag)
		    ii++;
		else
		    ii--;
		if(ii==16)
		{
			ii=17;
			ch='*';
			flag=true;
		}
		if(ii==SHOW)
		{
			ii=SHOW-1;
			ch=' ';
			flag=false;
		}  
        if(k>strlen2-2)
			k=0;
		for(i=2;i<strlen0-4;i++)
			pstr[SHOW][i]=pstr[SHOW][i+2];
		pstr[SHOW][i]=str2[k];
		pstr[SHOW][i+1]=str2[k+1];
		k+=2;

        //0
		if(flag1)
		{
		    for(i=0;i<strlen1;i++)
			    pstr[0][kk+i]=pstr[0][kk+i+2];
			pstr[0][kk+i]=' ';
			pstr[0][kk+i+1]=' ';
		    kk-=2;
		}
		else
		{
			for(i=strlen1;i>=0;i--)
			    pstr[0][kk+i+1]=pstr[0][kk+i-1];
			pstr[0][kk]=' ';
			pstr[0][kk+1]=' ';
		    kk+=2;
		}
		if(kk==0)
		{
			kk=2;
			flag1=false;
		}
		if(kk==20)
		{
			kk=18;
			flag1=true;
		}
        //没有按键重新循环
        if(!kbhit())
			continue;

		c=getch();
		if(c=='0')
		//退出程序
			break;
    	system("cls");
		switch(c)
		{
		case '1'://用初始值来创建一个表
			cout<<"创建一个表,请输入长度:";
			cin>>number;
			number1=0;
            if(list.Create(number,number1))
			{
				cout<<"表创建成功,表的长度是:"<<list.GetLength()<<endl;
			}
			else
				cout<<"创建失败!"<<endl;
			break;
		case '2'://销毁一个表,
			cout<<"你真得要销毁表吗?请输入(Y/y)确定:";
     		cin>>c;
			if(c=='Y'||c=='y')
			{
                list.DestroyList();
			    cout<<"表已经销毁!"<<endl;
			}
			break;
		case '3'://表是否已空
			cout<<"表的当前状态";
			if(list.IsEmpty())
				cout<<"是:空。"<<endl;
			else
				cout<<"是:不为空的。"<<endl;
			break;
		case '4'://获得表的长度。
			system("cls");
            cout<<"表的长度是:"<<list.GetLength()<<endl;
			break;
		case '5'://获得表的某位置的元素。
			cout<<"从表中取数据。\n请输入位置(1--"<<list.GetLength()<<"):";
			cin>>number;
            if(list.GetAt(number-1,number1))
			{
				cout<<"第"<<number<<"个数据是:"<<number1<<endl;
                cout<<"表的内容是:"<<endl;
			    list.Display();			
			}
			else
			    cout<<"取数据失败!"<<endl;
			break;
		case '6'://删除表中的数据。
			cout<<"从表中删除数据。\n请输入位置(1--"<<list.GetLength()<<"):";
			cin>>number;
			if(list.GetAt(number-1,number1))
			{
				cout<<"表的内容是:"<<endl;
			    list.Display();
				cout<<"第"<<number<<"个数据是:"<<number1<<endl;
 			    cout<<"你真得要删除吗?请输入(Y/y)确定:";
     		    cin>>c;
			    if(c=='Y'||c=='y')
				{
					list.Delete(number-1);
			        cout<<"第"<<number<<"个数据是:"<<number1<<"已经删除!"<<endl;
				}
			}
			else
				cout<<"删除失败!"<<endl;
			cout<<"表中的内容是:"<<endl;
			list.Display();
			break;
		case '7'://添加数据到表中 
			cout<<"向表中插入数据。\n请输入位置(1--"<<list.GetLength()<<"):";
			cin>>number;
			cout<<"请输入数据:";
			cin>>number1;
			if(list.Insert(number-1,number1))	
				cout<<"数据"<<number1<<"成功地插在表的第"<<number<<"个位置上"<<endl;
			else
				cout<<"添加失败!"<<endl;
			cout<<"表的内容是:"<<endl;
			list.Display();
			break;
		case '8'://追加数据到表尾
			cout<<"向表尾追加数据。\n请输入数据:";
			cin>>number1;
			if(list.Add(number1))
				cout<<"数据"<<number1<<"成功地追加在表尾"<<endl;
			else
				cout<<"追加失败!"<<endl;
            cout<<"表的内容是:"<<endl;
			list.Display();
			break;
		case '9':
			cout<<"修改表中的数据。\n请输入位置(1--"<<list.GetLength()<<"):";
			cin>>number;
			cout<<"请输入数据:";
			cin>>number1;
			if(list.SetAt(number-1,number1))
				cout<<"第"<<number<<"个数据修改成功!"<<endl;
			else
				cout<<"数据修改失败!"<<endl;
			cout<<"表的内容是:"<<endl;
			list.Display();
			break;
		case 'A':
		case 'a':
            cout<<"表的内容是:"<<endl;
			list.Display();
			break;
		default:
			cout<<"没有这样的的命令"<<endl;
			break;
		}
		cout<<"按任一键继续!"<<endl;
		getch();
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -