#include<stdio.h>
#include<malloc.h> #include<stdlib.h> #include<string.h> #define OK 1 #define ERROR 0 #define OVERFLOW -2 #includeusing namespace std; typedef int Status; // 定义函数返回值类型 typedef struct { char number[10]; // 学号 char name[20]; // 姓名 double score; // 成绩 }student; typedef student ElemType; typedef struct LNode { ElemType data; // 数据域 struct LNode next; //指针域 }LNode,LinkList; Status InitList(LinkList &L) // 构造空链表 L { L=(struct LNode)malloc(sizeof(struct LNode)); L->next=NULL; return OK; } Status GetElem(LinkList L,int i,ElemType &e) // 访问链表,找到 i位置的数据域,返回给 e { LinkList p; p=L->next; int j=1; while(p&&j<i) { p=p->next; ++j; } if(!p||j>i) return ERROR; e=p->data; return OK; } Status Search(LNode L,char str[],LinkList &p) // 根据名字查找 { p=L.next; while§ { if(strcmp(p->data.name,str)==0) return OK; p=p->next; } return ERROR; } Status ListInsert(LinkList L,int i,ElemType e) // 在 i个位置插入某个学生的信息 { LinkList p,s; p=L; int j=0; while(p&&j<i-1) { p=p->next; ++j; } if(!p||j>i-1) return ERROR; s=(struct LNode)malloc(sizeof(LNode)); s->data=e; s->next=p->next; p->next=s; return OK; } Status ListDelete(LinkList p,int i) // 删除 i位置的学生信息 { int j=0; while((p->next)&&(j<i-1)) { p=p->next; ++j; } if(!(p->next)||(j>i-1)) return ERROR; LinkList q; q=p->next; p->next=q->next; delete q; return OK; } void Input(ElemType *e) { printf(“姓名:”); scanf("%s",e->name); printf(“学号:”); scanf("%s",e->number); printf(“成绩:”); scanf("%d",&e->score); printf(“输入完成\n”); } void Output(ElemType *e) { printf("姓名:%s\n学号:%s\n成绩:%.2lf\n\n## 链表和顺序表
2020-08-27
最新推荐文章于 2022-03-31 15:54:59 发布