C语言单链表各操作源代码

本文提供了C语言实现单链表的各种操作的源代码,包括链表的创建、插入、删除、遍历等基本操作。
摘要由CSDN通过智能技术生成

C语言单链表各操作源代码

/*my_list.h*/
/*author:li
data:13/08/13*/

#ifndef MY_LIST_H_
#define MY_LIST_H_

typedef struct stu
{
	int num;
	char name[20];
        struct stu* next;
}stu_info;
typedef stu_info* node_p;
/*func:create list
return value:sucessfuf head of list,otherwise NULL is returned
para:node_p head*/
node_p init_list(node_p head);
node_p destory_list(node_p head);
node_p search_node(node_p head,int key);
node_p insert_node_to_list(node_p head,int key,node_p new);
void trav_list(node_p head);
node_p delete_node(node_p head,int key);
node_p change_node(node_p head,int a,int b);

#endif
/*tra_list.c*/
#include "my_list.h"
#include <stdio.h>

void trav_list(node_p head)
{
	node_p p=NULL;
	p=head;
	while(p!=NULL){
		printf("num:%d,name:%s\n",p->num
以下是一个用C语言实现宾馆客房管理系统的单链表源代码示例: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> // 定义客房结构体 typedef struct Room { int roomNo; // 客房号 char roomType[20]; // 房间类型 float price; // 房间价格 int status; // 房间状态:0表示空闲,1表示已预订,2表示已入住 struct Room *next; // 指向下一个客房的指针 } Room; // 定义客房管理系统结构体 typedef struct Hotel { Room *head; // 指向链表头结点的指针 int count; // 客房数量 } Hotel; // 初始化宾馆客房管理系统 void init(Hotel *hotel) { hotel->head = NULL; hotel->count = 0; } // 创建新的客房 Room *createRoom(int roomNo, char *roomType, float price, int status) { Room *room = (Room *)malloc(sizeof(Room)); room->roomNo = roomNo; strcpy(room->roomType, roomType); room->price = price; room->status = status; room->next = NULL; return room; } // 添加新的客房 void addRoom(Hotel *hotel, Room *room) { if (hotel->head == NULL) { hotel->head = room; } else { Room *p = hotel->head; while (p->next != NULL) { p = p->next; } p->next = room; } hotel->count++; } // 删除客房 void deleteRoom(Hotel *hotel, int roomNo) { if (hotel->head == NULL) { printf("宾馆客房管理系统为空,无法删除客房!\n"); return; } Room *p = hotel->head; Room *pre = NULL; while (p != NULL) { if (p->roomNo == roomNo) { break; } pre = p; p = p->next; } if (p == NULL) { printf("未找到客房号为%d的客房,无法删除!\n", roomNo); return; } if (pre == NULL) { hotel->head = p->next; } else { pre->next = p->next; } free(p); hotel->count--; } // 修改客房信息 void updateRoom(Hotel *hotel, int roomNo, char *roomType, float price, int status) { if (hotel->head == NULL) { printf("宾馆客房管理系统为空,无法修改客房信息!\n"); return; } Room *p = hotel->head; while (p != NULL) { if (p->roomNo == roomNo) { strcpy(p->roomType, roomType); p->price = price; p->status = status; printf("客房信息修改成功!\n"); return; } p = p->next; } printf("未找到客房号为%d的客房,无法修改客房信息!\n", roomNo); } // 查询客房信息 void queryRoom(Hotel *hotel, int roomNo) { if (hotel->head == NULL) { printf("宾馆客房管理系统为空,无法查询客房信息!\n"); return; } Room *p = hotel->head; while (p != NULL) { if (p->roomNo == roomNo) { printf("客房号:%d,类型:%s,价格:%.2f,状态:%d\n", p->roomNo, p->roomType, p->price, p->status); return; } p = p->next; } printf("未找到客房号为%d的客房,无法查询客房信息!\n", roomNo); } // 显示所有客房信息 void showAllRooms(Hotel *hotel) { if (hotel->head == NULL) { printf("宾馆客房管理系统为空,无法显示客房信息!\n"); return; } printf("客房号\t类型\t价格\t状态\n"); Room *p = hotel->head; while (p != NULL) { printf("%d\t%s\t%.2f\t%d\n", p->roomNo, p->roomType, p->price, p->status); p = p->next; } } int main() { Hotel hotel; init(&hotel); Room *room1 = createRoom(101, "单人间", 200.0, 0); Room *room2 = createRoom(102, "双人间", 300.0, 0); Room *room3 = createRoom(103, "豪华套房", 500.0, 0); addRoom(&hotel, room1); addRoom(&hotel, room2); addRoom(&hotel, room3); showAllRooms(&hotel); deleteRoom(&hotel, 102); updateRoom(&hotel, 103, "总统套房", 800.0, 1); queryRoom(&hotel, 103); showAllRooms(&hotel); return 0; } ``` 说明: 以上代码实现了一个简单的宾馆客房管理系统,使用单链表来存储客房信息。程序中定义了客房结构体和宾馆客房管理系统结构体,并实现了添加客房、删除客房、修改客房信息、查询客房信息和显示所有客房信息等基本功能。在主函数中,先初始化宾馆客房管理系统,然后创建三个客房并添加到系统中,显示所有客房信息,删除一个客房,修改一个客房信息,查询一个客房信息,最后再次显示所有客房信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值