sglink.rar

  • PUDN用户
    了解作者
  • Visual C++
    开发工具
  • 1KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 8
    下载次数
  • 2014-09-07 14:58
    上传日期
C++ 单链表的实现,增删改查等功能,适合初学者了解链表数据结构和C++的类封装。
sglink.rar
  • 单链表
  • 0807_链表.cpp
    3.4KB
内容介绍
// 0802_链表.cpp : Defines the entry point for the console application. #include <stdio.h> #include <stdlib.h> #include <malloc.h> #include <stdlib.h> struct SStud { int Num; char Name[20]; }; struct node{ SStud data; node* pNext; }*pHead = NULL; void AddHead(struct SStud& stud) { node *p = (node *)malloc(sizeof(node));//申请链表空间 /*构造结点*/ p->data = stud; p->pNext = pHead; pHead = p;//为了插入的第三个结点 } node* GetPosition() { node * p = pHead; if(!p) return NULL; while(p->pNext) { p = p->pNext; } return p; } void AddTail(struct SStud& stud) { node * p = GetPosition(); if (!p) { p = (node *)malloc(sizeof(node)); p->data = stud; p->pNext = NULL; pHead = p; } else { p->pNext = (node *)malloc(sizeof(node)); p = p->pNext; p->data = stud; p->pNext = NULL; } } void Browse() { struct node* p = pHead; if(!p) printf("\n该链表为空."); while (p) { printf("\n\t%d\t%s",p->data.Num,p->data.Name); p = p->pNext; } printf("\n浏览完毕!\n"); } bool RemoveAt(int nNum) { struct node *q = pHead; struct node* p = pHead; if (!p) { return 0; } else if(p->data.Num == nNum) { p = q = pHead = p->pNext; return 1; } else while(p->pNext) { p = p->pNext; if(p->data.Num == nNum) q->pNext = p->pNext; free(p); return 1; } return 0; } char DeleteAll(char a) { node *p = pHead,*q = p; if (a == 'Y' || a == 'y') { while(p) { q = p; p = p->pNext; free(q); } pHead = NULL; return 1; } else return 0; } int Detele() { system("cls"); struct node* p = pHead; printf("\t|*********************************************|\n"); printf("\t| 删除学生成绩 |\n"); printf("\t|*********************************************|\n"); printf("\t| → 1.按学号删除: |\n"); printf("\t| → 2.删除全部: |\n"); printf("\t| → 0.返回主菜单: |\n"); printf("\t|*********************************************|\n"); printf("\t请选择:"); int i = 0; scanf("%d",&i); switch(i) { case 1: printf("请输入学号:\n"); int a;char c; fflush(stdin); scanf("%d",&a); while(p) { if (p->data.Num == a) { printf("是否要删除学生(Y/N)!\n"); fflush(stdin); scanf("%s",&c); break; } else if (!p ->pNext) { printf("没有这个学生!\n"); system("pause"); } p = p->pNext; } if(c =='Y' || c == 'y') { if (RemoveAt(a)) { printf("删除成功!\n"); } system("cls"); Browse(); } break; case 2: printf("确认删除全部请按(Y/N)\n"); char b; fflush(stdin); scanf("%c",&b); // DeleteAll(b); if (DeleteAll(b)) { printf("删除成功!\n"); } else { printf("删除失败!\n"); } system("cls"); Browse(); break; } return i; } void main() { SStud stud[20]; int Len; printf("\n请选择要输入学生的个数(最多二十个):"); scanf("%d",&Len); for(int i = 0;i < Len;i++) { printf("请输入第%d个学生的信息(学号、姓名):\n",i+1); scanf("%d%s",&stud[i].Num,&stud[i].Name); // AddHead(stud[i]); AddTail(stud[i]); } node *p; p = pHead; printf("\n\t学号\t姓名"); Browse(); char a = 0; printf("是否要删除学生(Y/N)!\n"); scanf("%s",&a); if (a == 'Y'|| a == 'y') Detele(); // else // system("puase"); }
评论
    相关推荐
    • 数据库课程设计
      一个数据库课程设计,access管理工具实现,用的是窗体!
    • 数据库课程设计
      数据库课程设计十分完整有需要的请下载啊谢谢
    • 数据库课程设计
      广东工业大学数据库课程设计,可视化界面连接数据库,delphi7
    • 数据库课程设计
      数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述
    • 数据库课程设计
      数据库课程设计》由周爱武、汪海威、肖云编著,遵循数据库课程设计的具体要求,独立于具体的数据库教材,从实际应用系统的需求着手,引导读者逐步完成数据库设计全过程,重点讲解数据库系统的需求分析、概念设计、...
    • 数据库课程设计
      数据库课程设计人事管理系统 数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计...
    • 数据库课程设计
      数据库课程设计,基于visual basic自助银行管理系统,界面很清爽,实用。同学都说好,所以就上传了!!!
    • 数据库课程设计
      数据库课程设计 里面有详细的文档资料 包含数据库一切的图 以及生成的数据库表文件 期末得分为优秀
    • 数据库课程设计
      可以作为数据库课程设计,也可以作为Java的课程设计,内容全面。本资源转载的,非本人原创。用于交流学习,特此申明!
    • 数据库课程设计
      数据库课程设计蓝天大学学生管理系统 2.商店信息管理系统 3.实验室机房收费管理系统 4.图书馆资料检索系统 5.企业库存管理系统 6.仓库管理系统 7.工程项目管理系统 8.教材管理系统 9.企业人事管理系统 10.企业财务...