精品素材归纳
PAGE 页码页码/NUMPAGES 总页数总页数
素材归纳不易,仅供学习参考
题目一 线性结构的操作
1.用线性表的顺序存储(数组)保存数据
输入要待查找的学号
输入要待查找的学号
N输入的与学生里面的学
N
输入的与学生里面的学
号是否相等
Y
Y
输出没有此人输出该信息
输出没有此人
输出该信息
算法的N-S图或流程图
输入待删除的学号
输入待删除的学号
输入的与学生里面的学号是否相等
输入的与学生里面的学号是否相等
N
N
Y
Y
删除该学生学号没有该学生
删除该学生学号
没有该学生
2.用线性表的链式存储(链表)保存数据
s插入:
s
C1 ^H ^
C1 ^
H
^
HC1 ^
H
C1 ^
S
S
C2 H C1 ^Ci-1
C2
H
C1 ^
Ci-1
…
…
C1
C1
ps
p
s
删除:
An ^…Ai-1-… LAiA1
An ^
…
Ai-1-
…
L
Ai
A1
P
P
…Ai+1AI-1…LAn ^AiA1
…
Ai+1
AI-1
…
L
An ^
Ai
A1
r
include
#include
typedef struct
{
int num; //学号
char name[10]; //姓名
}student; //定义的抽象元素类型 Elemtype
typedef struct Node /*结点类型定义*/
{
student data;
struct Node *next;
}Node, *LinkList; /* LinkList为结构指针类型*/
static int count; //学生人数
//带头结点的尾插入法创建链表
void insert(LinkList head)
{
LinkList p,q; //p代表的待插元素代入最后一个元素
q=head; //q指向head结点
printf("输入学生人数:");
scanf("%d",&count);
for(int i=0;i
{
printf("\n输入第%d个学生信息:\n",i+1);
p = (LinkList)malloc(sizeof(Node)); //结点p申请一个空间
printf("输入学号:");
scanf("%d",&p->data.num); //输入结点p的数据°学号
printf("\n输入姓名:");
scanf("%s",p->data.name); //输入结点的数据域姓名 name为数组类型 数组名为首地址 所有此处不需要地ì址符号
if(i==0)
{
head->next = p; //i=0 链表中没有元素只有头节点把插入到head之后
}
else
{
q->next = p; //链表中已有结点元素结点采用尾插入法
}
q = p; //每插入一个元素就赋值于q q始终指向最后一个元素
}
p->next = NULL; //设置next域为空
}
void print(LinkList head)
{
LinkList x; //定义一个链表结点
x = head->next ; //该节点指向第一个元素
printf("学生信息如下\n");
while(x) //存在结点
{
printf("学号%d 姓名%s\n",x->data.num,x->data.name); //输出该结点的数据域学号和姓名
x = x->next ; //下一个元素
}
printf("\n");
}
//把链表中的文件信息放入文件中
//写入语句
void savetofile(LinkList head)
{
FILE*fp;
LinkList p;
p=head->next;
if((fp=fopen("d:\\st2.txt","wb+"))==NULL)
{
printf("不能打开文件");
return;
}
while(p)
{
fprintf(fp,"%d%s\r\n",p->data.num,p->data.name);
p=p->next;
}
printf("\n写入成功\n");
}
//功能菜单 提示性语句
void menu()
{
printf(