@数据结构C/C++版(4)《栈的链式存储结构以及增删改查操作的实现》

@数据结构C/C++版(4)《栈的链式存储结构以及增删改查操作的实现》

栈是一种操作受限的线性表,其元素操作只能对栈顶元素进行,故大体上操作和单链表类似,可实现链栈的创建以及增删改查的操作。

#include<stdio.h>
#include<stdlib.h>
typedef struct LNode{
   
	int data;
	struct LNode* next;
}LNode,*LinkStack;
 
 
 void InitLinkStack(LinkStack &S_top){
   //创建链栈顶结点 
 	
		 S_top=(LNode*)malloc(sizeof(LNode));
		 S_top=NULL;
		 printf("栈创建成功\n");
 }
 
 void Push(LinkStack &S_top
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用C语言链式存储结构实现学生信息管理的增删改查的示例代码: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> // 定义学生结构体 typedef struct student { char name[20]; // 姓名 int age; // 年龄 char id[10]; // 学号 struct student *next; } Student; // 创建新的学生节点 Student *create_student() { Student *new_student = (Student *)malloc(sizeof(Student)); printf("请输入学生姓名:"); scanf("%s", new_student->name); printf("请输入学生年龄:"); scanf("%d", &(new_student->age)); printf("请输入学生学号:"); scanf("%s", new_student->id); new_student->next = NULL; return new_student; } // 添加学生 void add_student(Student **head) { Student *new_student = create_student(); if (*head == NULL) { *head = new_student; } else { Student *p = *head; while (p->next != NULL) { p = p->next; } p->next = new_student; } printf("添加成功!\n"); } // 删除学生 void delete_student(Student **head) { if (*head == NULL) { printf("链表为空,无法删除!\n"); return; } char id[10]; printf("请输入要删除学生的学号:"); scanf("%s", id); Student *p = *head; if (strcmp(p->id, id) == 0) { *head = p->next; free(p); printf("删除成功!\n"); return; } while (p->next != NULL) { if (strcmp(p->next->id, id) == 0) { Student *temp = p->next; p->next = temp->next; free(temp); printf("删除成功!\n"); return; } p = p->next; } printf("未找到该学号的学生!\n"); } // 修改学生信息 void modify_student(Student *head) { if (head == NULL) { printf("链表为空,无法修改!\n"); return; } char id[10]; printf("请输入要修改学生的学号:"); scanf("%s", id); Student *p = head; while (p != NULL) { if (strcmp(p->id, id) == 0) { printf("请输入新的学生姓名:"); scanf("%s", p->name); printf("请输入新的学生年龄:"); scanf("%d", &(p->age)); printf("修改成功!\n"); return; } p = p->next; } printf("未找到该学号的学生!\n"); } // 查找学生信息 void find_student(Student *head) { if (head == NULL) { printf("链表为空,无法查找!\n"); return; } char id[10]; printf("请输入要查找学生的学号:"); scanf("%s", id); Student *p = head; while (p != NULL) { if (strcmp(p->id, id) == 0) { printf("学生姓名:%s\n", p->name); printf("学生年龄:%d\n", p->age); printf("学生学号:%s\n", p->id); return; } p = p->next; } printf("未找到该学号的学生!\n"); } // 输出所有学生信息 void print_all_students(Student *head) { if (head == NULL) { printf("链表为空!\n"); return; } Student *p = head; while (p != NULL) { printf("学生姓名:%s\n", p->name); printf("学生年龄:%d\n", p->age); printf("学生学号:%s\n", p->id); printf("\n"); p = p->next; } } int main() { Student *head = NULL; // 头节点 int choice; while (1) { printf("请选择操作:\n"); printf("1. 添加

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值