再写链表的建立、浏览、修改、插入、删除(接下来是双链表)
来源:互联网 发布:python字典get后加一 编辑:程序博客网 时间:2024/05/21 17:33
pList.h
struct PList
{
char name[10];
char stuId[8];
short resoult;
struct pList *next;
};
creat.c
#include "stdio.h"
#include "pList.h"
#include "stdlib.h"
extern int count;
struct PList *creat(struct PList * head)
{
struct PList *pc,*pf;
char yn='y';
do
{
pc = (struct PList *)malloc(sizeof(struct PList ));
if(pc == NULL)
{
printf("/tLIST CREAD FAILED!!!!");
return NULL;
}
printf("/t请输入学生姓名:");
fflush(stdin);
scanf("%s",pc->name);
printf("/t请输入学生学号:");
fflush(stdin);
scanf("%s",pc->stuId);
printf("/t请输入学生成绩:");
fflush(stdin);
scanf("%d",&pc->resoult);
if(count == 0)
pf = head =pc;
else pf->next = pc ;
count++;
pc->next = NULL;
pf = pc;
printf("/t是否还要录入学生:");
fflush(stdin);
scanf("%c",&yn);
}while(toupper(yn) !='N');
return head;
}
del.c
#include "stdio.h"
#include "pList.h"
#include "string.h"
#include"stdlib.h"
extern count;
struct PList *del(struct PList *head)
{
struct PList * pc,*back;
char sId[8];
if(head == NULL)
{
printf("/nTLIST IS NULL, DELETE FAILED!!/n");
return NULL;
}
printf("/n请输入你要删除的学号:");
scanf("%s",sId);
if(strcmp(head->stuId,sId)==0)
{
pc=head->next;
free(head);
count--;
return pc;
}
pc = head;
back = pc;
pc = pc->next;
while(pc != NULL)
{
if(strcmp(pc->stuId,sId)==0)
{
back->next=pc->next;
free(pc);
count--;
return head;
}
back = pc;
pc= pc->next;
}
return head;
printf("/tNO RECORDE!!!");
}
disp.c
#include "stdio.h"
#include "pList.h"
extern int count;
void disp(struct PList * head)
{
struct PList * pc;
short total=0;
if(head == NULL)
{
printf("/n/tLIST IS EMPTY!!!/n");
}
else
{
pc = head;
printf("/t姓名/t学号/t成绩/n");
while(pc != NULL)
{
printf("/t%s/t%s/t%d/n",pc->name,pc->stuId,pc->resoult);
total = total+pc->resoult;
pc = pc->next;
}
printf("/n/t共%d个学生/t总成绩%d分/t平均成绩:%1.2f分/n",count,total,(float)total/count);
}
}
insert.c
#include "stdio.h"
#include "pList.h"
#include "stdlib.h"
#include "string.h"
extern int count;
struct PList *insert(struct PList * head)
{
struct PList *back,*pc,*pi;
char sId[8];
pi = (struct PList * )malloc(sizeof(struct PList));
if(pi == NULL)
{
printf("/tINSERT FAILED!!");
return NULL;
}
printf("/t请输入学生姓名:");
fflush(stdin);
scanf("%s",pi->name);
printf("/t请输入学生学号:");
fflush(stdin);
scanf("%s",pi->stuId);
printf("/t请输入学生成绩:");
fflush(stdin);
scanf("%d",&pi->resoult);
if(head == NULL)
{
head = pi;
head->next = NULL;
count++;
return head;
}
printf("/t你要插入谁的后面(学号):");
scanf("%s",sId);
pc = head;
while (pc != NULL)
{
if(strcmp(pc->stuId,sId)==0)
{
pi->next = pc->next;
pc->next = pi;
count++;
return head;
}
back = pc;
pc=pc->next;
}
back->next=pi;
pi->next=NULL;
count++;
return head;
}
modif.c
#include "stdio.h"
#include "pList.h"
#include "string.h"
void modif(struct PList * head)
{
struct PList *pc;
char sId[8];
short mresoult;
if(head == NULL)
{
printf("/n/tLIST IS EMPTY, MODIF FAILED!!/n");
}
else
{
printf("/n/t请输入要修改的学生学号:");
fflush(stdin);
scanf("%s",sId);
pc = head;
while(pc != NULL)
{
if(strcmp(pc->stuId,sId)==0)
{
printf("/n/t修改前:/n");
printf("/t姓名/t学号/t成绩/n");
printf("/t%s/t%s/t%d/n",pc->name,pc->stuId,pc->resoult);
printf("/t请输入新成绩:");
scanf("%d",&mresoult);
pc->resoult=mresoult;
printf("/n/t修改后:/n");
printf("/t姓名/t学号/t成绩/n");
printf("/t%s/t%s/t%d/n",pc->name,pc->stuId,pc->resoult);
break;
}
pc=pc->next;
}
if(pc == NULL)
printf("/t没有你要的学号!!!/n");
}
}
LinkList.c
#include "stdio.h"
#include "pList.h"
int count=0;
struct PList *creat(struct PList * head);
void disp(struct PList * head);
struct PList * insert(struct PList * head);
void modif(struct PList * head);
struct PList * del(struct PList *head);
void main()
{
struct PList *head=NULL;
char yn = 'y' ;
short choice;
do
{
printf("/n===========================/n");
printf("/n/t1.创建/n");
printf("/t2.浏览/n");
printf("/t3.插入/n");
printf("/t4.修改成绩/n");
printf("/t5.删除/n");
printf("/t6.退出/n/n");
printf("/n===========================/n");
printf("/t请输入你要的操作:");
scanf("%d",&choice);
if(choice < 1 || choice >6 )
{
printf("/t没有你要的选择,请重新选择!!/n");
}
else
{
switch(choice)
{
case 1:
head=creat(head);
break;
case 2:
disp(head);
break;
case 3:
head=insert(head);
break;
case 4:
modif(head);
break;
case 5:
head=del(head);
break;
case 6:
yn = 'n';
}
}
}while(yn == 'y');
}
- 再写链表的建立、浏览、修改、插入、删除(接下来是双链表)
- 链表基本操作(建立、修改,插入、删除、打印)
- 红黑树的建立,插入,删除
- 栈的建立,插入,删除
- 单链表的建立、插入、删除
- 数据的插入,修改,删除
- 链表的建立,插入,删除,查找(1)
- 二叉排序树的操作(建立、插入、删除和查找)
- 二叉树的建立,删除,查找,插入,输出(数据结构)
- 链表的建立、插入和删除
- 单链表的建立,插入,删除,逆置
- 链表的建立插入与删除
- 单链表的初始化,建立,插入,查找,删除。
- 双链表的初始化,建立,插入,查找,删除
- 单链表的初始化,建立,插入,查找,删除
- 双链表的初始化,建立,插入,查找,删除
- 单链表的初始化,建立,插入,查找,删除
- 链表的建立、插入和删除
- 使用DWR反转AJAX的失败经验和教训
- 网页中的滚动信息示例代码
- 汪国真:思念是一种美丽的孤独
- hello
- Spring MVC验证的配置步骤
- 再写链表的建立、浏览、修改、插入、删除(接下来是双链表)
- 与人相处的黄金法则
- 第三章 编译并运行第一个程序
- effective c++笔记1
- 初识CVS
- Thinksea HtmlRotator 是一个用于轮换显示HTML内容的控件。
- 十年后,ELM会不会创造SOA现在所创造的局面?
- 用一句SQL取出第 m 条到第 n 条记录的方法
- 窗口自动降落