在学习链表后发现链表的连续性,节省空间之后写了一个学生管理表的小项目 独立思考了如何删除结点(代码中是将结点跳过却没有释放结点的空间),如何增加结点与修改选中结点。
代码作为练习代码。没有更加的精简 可能会给你在链表学习上 提供一些一些参考思路。
main()起点与menu目录
int main()
{
Node* hand;
init();
return 0;
}
void menu()
{
printf("*****************************************\n");
printf("**************1增加学生档案**************\n");
printf("**************2删除对应档案**************\n");
printf("**************3查看**********************\n");
printf("**************4更改代码******************\n");
printf("*****************************************\n");
}
建立动态链表与增加结点操作
在代码的主题上运用里分支语句switch语句和循环语句do while语句来进行
单链表的建立运用一个新结点和一个对为节点来配合建立。
每次选择增加档案后会再次给 pnew新结点分配空间 然后直接 在尾节点pend原有基础上连接
(在这里将建立链表的内容自己建立一个函数来进行 代码结构会简洁不少)
最后将不需要的penw结点释放
int c; //选择 存储
int j; //后续 判断是否再次进行更改操作的 变量
Node* hand;
Node* pnew, * pend;
hand = NULL;
pend = (Node*)malloc(sizeof(Node));//先分配队尾结点 队尾结点只要初始化一次就可以 后续新结点不断地将地址赋给队尾结点
do {
menu();
printf("请选择要进行的操作\n");
scanf("%d", &c);//操作选择
switch (c)
{
case 1:
while (1)
{
pnew = (Node*)malloc(sizeof(Node)); //分配新结点的地址
printf("请输入第%d个学生的信息: 学号:",