简单的链表

举报
开心星人 发表于 2022/10/14 11:20:28 2022/10/14
【摘要】 老师上课讲的代码,希望对你有所帮助#include <iostream>using namespace std;// 结构体的声明struct time{ int day; int month; int year;};// 使用typedef为结构体声明别名typedef struct student1{ char *name; int number; int ...

老师上课讲的代码,希望对你有所帮助

#include <iostream>

using namespace std;

// 结构体的声明
struct time{
     int day;
	 int month;
	 int year;
};
// 使用typedef为结构体声明别名
typedef struct student1{
      char *name;
	  int number;
	  int age;
	  time t;
	  struct student1 *pnext;
}Student1,*Ptrstudent1;

typedef struct student2{
      char name[20];
	  int number;
	  int age;
	  time t;
	  struct student2 *pnext;
}Student2,*Ptrstudent2;

void stu1()
{
	/*三种定义方法*/
   struct student1 *p = new student1;
   Student1 *p1 = new Student1;
   Ptrstudent1 p2 = new Student1;

   /*有关信息的初始化*/
   p->name = "佩奇";
   p->age = 20;
   p->number = 15101;
   p->t.day = 6;
   p->t.month = 6;
   p->t.year = 2016;
   p->pnext = p1;

   p1->name = "乔治";
   p1->age = 20;
   p1->number = 15102;
   p1->t.day = 5;
   p1->t.month = 5;
   p1->t.year = 2016;
   p1->pnext =	p2;

   p2->name = "爱莎";
   p2->age = 20;
   p2->number = 15103;
   p2->t.day = 1;
   p2->t.month = 1;
   p2->t.year = 2016;
   p2->pnext = NULL;

   /*信息的输出*/
   for(; p!=NULL; p=p->pnext)
   {
       cout<<"学生姓名"<<p->name<<endl;
       cout<<"学生年龄"<<p->age<<endl;
	   cout<<"学生学号"<<p->number<<endl;
	   cout<<"学生入学年份"<<p->t.year<<endl;
	   cout<<"学生入学月份"<<p->t.month<<endl;
	   cout<<"学生入学日子"<<p->t.day<<endl;
	   cout<<"\n\n";
   }
}

void stu2()
{
    /*三种定义方法*/
	struct student2 *head = NULL;//头结点,用来存放首地址
	Student2 *p1 , *p2 ;
	p1 = p2 = new Student2;
    int N = 0;  //用来记录学生的数量

	while(true)
	{
	   cout<<"请输入学生的学号(输入学号以0结束信息输入):";
	   cin>>p1->number;

	   if(p1->number == 0)  //判断是否结束学生信息的输入
		   break;
       //如果输入学号不为0,则继续输入学生信息
	   N++;

	   cout<<"请输入学生的姓名:";
	   cin>>p1->name;
	   cout<<"请输入学生的年龄:";
	   cin>>p1->age;
	   cout<<"请输入学生的入学年份:";
	   cin>>p1->t.year;
	   cout<<"请输入学生的入学月份:";
	   cin>>p1->t.month;
	   cout<<"请输入学生的入学日子:";
	   cin>>p1->t.day;

	   if(N == 1)
	     head = p1;
	   else
		   p2->pnext = p1;
	   p2 = p1;
	   p1 = new student2;
	}

    p2->pnext = NULL;

    Student2 *p = head;

	//将输入的学生信息输出
	cout<<"\n\n输出学生信息为:"<<endl;
	 for(;p != NULL; p = p->pnext)
   {
       cout<<"学生姓名"<<p->name<<endl;
       cout<<"学生年龄"<<p->age<<endl;
	   cout<<"学生学号"<<p->number<<endl;
	   cout<<"学生入学年份"<<p->t.year<<endl;
	   cout<<"学生入学月份"<<p->t.month<<endl;
	   cout<<"学生入学日子"<<p->t.day<<endl;
	   cout<<"\n\n";
   }

}

int main()
{
   int n;
   cout<<"选择1直接输出内部存储的学生数据信息"<<endl;
   cout<<"选择2将必须先输入学生信息然后打印输出"<<endl;
   cout<<"当输入序号为0时,表示结束选择"<<endl;
   cout<<"请输入你要选择的程序序号:"<<endl;

   while(cin >> n)
   {
	   if(n == 0)
		   break;

       switch(n)
	   {
         case 1:  stu1(); break;

         case 2:  stu2(); break;

         default:
	         cout<<"请输入错误"<<endl;
	           break;
	   }

   }

return 0;
}

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。