赞
踩
宝子,你不点个赞吗?不评个论吗?不收个藏吗?
最后的最后,关注我,关注我,关注我,你会看到更多有趣的博客哦!!!
喵喵喵,你对我真的很重要。
目录
- #ifndef _C1_H_
- #define _C1_H_
-
- #include<string.h>
- #include<stdio.h> /* EOF(=^Z或F6),NULL */
- #include<stdlib.h> /* malloc()等 */
- #include<math.h> /* floor(),ceil(),abs() */
-
- /* 函数结果状态代码 */
- #define TRUE 1
- #define FALSE 0
- #define OK 1
- #define ERROR 0
- #define INFEASIBLE -1
-
- /* #define OVERFLOW -2 因为在math.h中已定义OVERFLOW的值为3,故去掉此行 */
- typedef int Status; /* Status是函数的类型,其值是函数结果状态代码,如OK等 */
- typedef int Boolean; /* Boolean是布尔类型,其值是TRUE或FALSE */
-
- #endif
- #include"c1.h"
- #define MAXSIZE 100
- typedef int ElemType;
-
-
- typedef struct{
- ElemType *elem;
- int length;
- }SqList;
-
- Status InitList_Sq(SqList *L);
- int GetElem(SqList L,int i,ElemType *e);
- int LocateElem(SqList L,ElemType e);
- Status ListInsert_Sq(SqList *L,int i ,ElemType e);
- Status ListDelete_Sq(SqList *L,int i);
- void DestroyList(SqList *L);
- void ClearList(SqList *L);
- int GetLength(SqList L);
- int IsEmpty(SqList L);
-
-
-
- Status InitList_Sq(SqList *L)
- {
- L->elem=(ElemType *)malloc(sizeof(ElemType)* MAXSIZE);
- if(L->elem==NULL)
- exit(OVERFLOW);
- L->length=0;
- return OK;
- }
-
-
-
-
- int GetElem(SqList L,int i,ElemType *e)
- {
- if (i<1||i>L.length)
- return ERROR;
- *e=L.elem[i-1];
- return OK;
- }
-
-
- int LocateElem(SqList L,ElemType e)
- {
- int i;
- for (i=0;i<=L.length-1;i++)
- if (L.elem[i]==e)
- return i+1;
- return 0;
- }
-
- Status ListInsert_Sq(SqList *L,int i ,ElemType e)
- {
- int j;
- if(i<1 || i>L->length+1)
- return ERROR;
- if(L->length==MAXSIZE)
- return ERROR;
- for( j=L->length-1;j>=i-1;j-- )
- L->elem[j+1]=L->elem[j];
- L->elem[i-1]=e;
- ++L->length;
- return OK;
- }
-
- Status ListDelete_Sq(SqList *L,int i)
- {
- int j;
- if(i<1||i>L->length)
- return ERROR;
- for (j=i;j<=L->length-1;j++)
- L->elem[j-1]=L->elem[j];
- L->length--;
- return OK;
- }
-
-
-
- void DestroyList(SqList *L)
- {
- if (L->elem)
- free(L->elem);
- }
-
-
-
- void ClearList(SqList *L)
- {
- L->length=0;
- }
-
-
-
- int GetLength(SqList L)
- {
- return L.length;
- }
-
-
-
- int IsEmpty(SqList L)
- {
- if (L.length==0)
- return OK;
- else
- return ERROR;
- }
- #include"sqlist.c"
- void menu();
- void PrintList(SqList L);
- void DeleteAll(SqList* L,ElemType e);
- void menu()
- {
- printf("**顺序表功能选择界面**\n");
- printf("1.初始化顺序表\n");
- printf("2.插入\n");
- printf("3.批量输入\n");
- printf("4.输出\n");
- printf("5.删除第i个元素\n");
- printf("6.删除与值e相等的所有元素\n");
- printf("0.退出\n");
- }
- void PrintList(SqList L)
- {
- int i;
- if(L.length==0)
- {
- printf("当前顺序表为空表!\n");
- }
- else
- {
- printf("顺序表的当前元素:");
- for(i=1;i<=L.length;i++)
- {
- printf("%d ",L.elem[i-1]);
- }
- printf("\n");
- }
- }
- void DeleteAll(SqList *L,ElemType e)
- {
- int i,x,L_len;
- L_len=GetLength(*L);
- for(i=1;i<=L_len;i++)
- {
- x=LocateElem(*L,e);
- if(x!=0)
- ListDelete_Sq(L,x);
- else
- break;
- }
- }
- int main()
- {
- SqList L;
- ElemType e;
- int choose,temp,i,n;
- menu();
- while(1)
- {
-
- printf("\n请选择功能:");
- scanf("%d",&choose);
- switch(choose)
- {
- case 1:
- temp=InitList_Sq(&L);
- if(temp==OK)
- {
- printf("顺序表初始化成功!\n");
- printf("顺序表空间的起始化为:%x\n",L.elem);
- printf("顺序表的当前长度为:%d\n",L.length);
- printf("顺序表的当前最大容量为:%d\n",MAXSIZE);
- }
- else
- {
- printf("顺序表初始化失败!");
- return 0;
- }
- break;
- case 2:
- printf("请输入要插入的元素位置:");
- scanf("%d",&i);
- printf("请输入要插入元素的值:");
- scanf("%d",&e);
- temp=ListInsert_Sq(&L,i,e);
- if(temp==OK)
- {
- printf("插入元素成功!\n");
- PrintList(L);
- }
- else
- printf("插入失败!\n");
- break;
- case 3:
- printf("请输入要插入元素的个数:");
- scanf("%d",&n);
- printf("请输入要插入的元素(用空格分隔):");
- for(i=1;i<=n;i++)
- {
- scanf("%d",&e);
- temp=ListInsert_Sq(&L,L.length+1,e);
- if(temp==ERROR)
- {
- printf("插入第%d个元素失败!\n",i);
- break;
- }
- }
- if(i>n)
- printf("请输入元素成功!\n");
- PrintList(L);
-
- break;
- case 4:
- PrintList(L);
- break;
- break;
- case 5:
- printf("请输入要删除的元素位置:");
- scanf("%d",&i);
- ListDelete_Sq(&L,i);
- if(temp==ERROR)
- printf("删除失败!\n");
- else
- {
- printf("删除成功!\n");
- PrintList(L);
- }
- break;
- case 6:
- printf("请输入要删除的值:");
- scanf("%d",&e);
- DeleteAll(&L,e);
- PrintList(L);
- break;
- case 0:
- printf("退出系统\n");
- return 0;
- default:
- printf("输入错误,请重新输入!\n");
- break;
- }
- }
- return 0;
- }
- #ifndef _C1_H_
- #define _C1_H_
-
- #include<string.h>
- #include<stdio.h> /* EOF(=^Z或F6),NULL */
- #include<stdlib.h> /* malloc()等 */
- #include<math.h> /* floor(),ceil(),abs() */
-
- /* 函数结果状态代码 */
- #define TRUE 1
- #define FALSE 0
- #define OK 1
- #define ERROR 0
- #define INFEASIBLE -1
- /* #define OVERFLOW -2 因为在math.h中已定义OVERFLOW的值为3,故去掉此行 */
- typedef int Status; /* Status是函数的类型,其值是函数结果状态代码,如OK等 */
- typedef int Boolean; /* Boolean是布尔类型,其值是TRUE或FALSE */
-
- #endif
- #include"c1.h"
- typedef struct student
- {
- char num[6];
- char name[20];
- int score1,score2,score3;
- struct student *next;
- }LNode,*LinkList;
- void menu();
- void CreateList_L(LinkList *L,int n);
- void Print_L(LinkList L);
- int ListInsert_L(LinkList *L,int i,LNode e);
- int ListDelete_L(LinkList *L,int i);
- void Print_L(LinkList L);
- void help();
- //查询学生信息函数
- //修改学生信息
- //保存学生信息
-
- void help()//辅助系统
- {
- printf("\n0.欢迎使用系统帮助!\n");
- printf("\n1.初次进入系统后,请先选择学生成绩单链表的创建;\n");
- printf("\n2.按照菜单提示键入数字代号;\n");
- printf("\n3.增加学生信息后,请输出学生信息,查验;\n");
- printf("\n4.谢谢您的使用!\n");
- printf("\n");
- }
-
- void menu()
- {
- printf("****学生成绩管理系统****\n");
- printf("1.学生成绩单链表的创建\n");
- printf("2.插入学生信息\n");
- printf("3.删除学生信息\n");
- printf("4.输出学生信息\n");
- printf("0.退出");
- }
- void CreateList_L(LinkList *L,int n)
- {
- LinkList r,p;
- int i;
- (*L)=(LinkList)malloc(sizeof(LNode));
- r=(*L);
- for(i=1;i<=n;i++)
- {
- p=(LinkList)malloc(sizeof(LNode));
- printf("请输入第%d位学生的学号 姓名 成绩(用空格分隔我):",i);
- scanf("%s %s %d %d %d",p->num,p->name,&p->score1,&p->score2,&p->score3);
- p->next=NULL;
- r->next=p;
- r=p;
- }
- }
- void Print_L(LinkList L)
- {
- LinkList p;
- int i;
- p=L->next;
- if(!p)
- printf("该学生成绩表为空表!\n");
- else
- {
- printf("所有学生信息:\n");
- printf("学号\t姓名\t数据结构成绩\t高等数学成绩\t大学英语成绩\n");
- while(p)
- {
- printf("%s\t%s\t %d\t %d\t %d\n",p->num,p->name,p->score1,p->score2,p->score3);
- p=p->next;
- }
- }
- }
- int ListInsert_L(LinkList *L,int i,LNode e)
- {
- LinkList p,s;
- int j;
- p=(*L);
- j=0;
- while(p&&j<i-1)
- {
- p=p->next;
- j++;
- }
- if(!p||j>i-1)
- return ERROR;
- s=(LinkList)malloc(sizeof(LNode));
- *s=e;
- s->next=p->next;
- p->next=s;
- return OK;
-
- }
- int ListDelete_L(LinkList *L,int i)
- {
- LinkList p,q;
- int j;
- p=(*L);
- j=0;
- while(p->next&&j<i-1)
- {
- p=p->next;
- j++;
- }
- if(!(p->next)||j>i-1)
- return ERROR;
- q=p->next;
- p->next=q->next;
- free(q);
- return OK;
- }
-
- int main()
- {
-
- LinkList L;
- int choose,n,i,temp;
- LNode e;
- char snum[20];
- help();
- while(1)
- {
- menu();
- printf("\n请选择功能:");
- scanf("%d",&choose);
- switch(choose)
- {
- case 1:
- printf("学生成绩单链表的创建\n");
- printf("\n请选择功能:");
-
- scanf("%d",&n);
- CreateList_L(&L,n);
- Print_L(L);
- break;
- case 2:
- printf("请插入学生信息\n");
- scanf("%d",&i);
- printf("请输入要插入学生的学号 姓名 数据结构成绩\t高等数学成绩\t大学英语成绩(用空格分隔):");
- scanf("%s %s %d %d %d",e.num,e.name,e.score1,e.score2,e.score3);
- temp=ListInsert_L(&L,i,e);
- if(temp==OK)
- {
- printf("插入成功!\n");
- printf("\n请选择功能:");
- Print_L(L);
- }
- else
- printf("插入失败!\n");
- break;
- case 3:
- printf("删除学生信息\n");
- printf("请输入要删除元素的位置");
- scanf("%d",&i);
- temp=ListDelete_L(&L,i);
- if(temp==OK)
- {
- printf("删除成功!\n");
- printf("\n请选择功能:");
- Print_L(L);
- }
- else
- printf("删除失败!\n");
- break;
- case 4:
- printf("输出学生信息\n");
- printf("\n请选择功能:");
- Print_L(L);
- break;
- case 0:
- printf("退出系统!\n");
- return 0;
- default:
- printf("输入错误,请重新输入!\n");
- break;
- }
- }
- return 0;
- }
宝子,你不点个赞吗?不评个论吗?不收个藏吗?
最后的最后,关注我,关注我,关注我,你会看到更多有趣的博客哦!!!
喵喵喵,你对我真的很重要。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。