7.19-数据结构-作业

1.按值进行修改函数

//按值修改
int listUpdateValue(seqList *S,datatype old_e,datatype new_e)
{
	//判断逻辑
	if(listEmpty(S))
	{
		return -1;
	}
	//修改逻辑
	for(int i=0;i<S->len;i++)
	{
		if(old_e==S->data[i])
		{
			S->data[i] = new_e;
		}
	}
}

2.按位置进行查找函数,返回查找到的数据

//按位置查找返回查找
datatype listSearchPos(seqList *S,int pos)
{
	//判断逻辑
	if(pos>S->len-1 || pos<0)
	{
		return -1;
	}
	return S->data[pos];

}

3.完成使用选择排序实现顺序表降序 ​

//选择排序
void listselectionSort(seqList *S)
{
	int index;
	datatype temp;
	
	for(int i=0;i<S->len;i++)
	{
		index = i;
		for(int j=i;j<S->len;j++)
		{
			if(S->data[j]>S->data[i])
			{
				index=j;
			}
		}
		if(index!=i)
		{
			temp = S->data[i];
			S->data[i] = S->data[index];
			S->data[index] = temp;
		}
	}
}

XMind思维导图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
图书管理系统可以使用链表来存储书籍信息,每本书可以用一个结构体来表示,包括书名、作者、出版社、ISBN、价格等属性。链表的节点可以表示每本书,包括指向前一个节点和后一个节点的指针,以及存储书籍信息的结构体。 下面是一个简单的图书管理系统链表的代码示例: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> // 书籍结构体 typedef struct Book { char title[50]; // 书名 char author[20]; // 作者 char publisher[30]; // 出版社 char ISBN[20]; // ISBN float price; // 价格 struct Book* next; // 指向下一个节点的指针 struct Book* prev; // 指向前一个节点的指针 } Book; // 创建新的书籍节点 Book* create_book_node(char* title, char* author, char* publisher, char* ISBN, float price) { Book* book = (Book*)malloc(sizeof(Book)); strcpy(book->title, title); strcpy(book->author, author); strcpy(book->publisher, publisher); strcpy(book->ISBN, ISBN); book->price = price; book->next = NULL; book->prev = NULL; return book; } // 在链表末尾添加新的书籍 void add_book(Book** head, char* title, char* author, char* publisher, char* ISBN, float price) { Book* book = create_book_node(title, author, publisher, ISBN, price); if (*head == NULL) { *head = book; } else { Book* curr = *head; while (curr->next != NULL) { curr = curr->next; } curr->next = book; book->prev = curr; } } // 根据书名查找书籍 Book* find_book_by_title(Book* head, char* title) { Book* curr = head; while (curr != NULL) { if (strcmp(curr->title, title) == 0) { return curr; } curr = curr->next; } return NULL; } // 更新书籍信息 void update_book(Book* book, char* title, char* author, char* publisher, char* ISBN, float price) { strcpy(book->title, title); strcpy(book->author, author); strcpy(book->publisher, publisher); strcpy(book->ISBN, ISBN); book->price = price; } // 删除书籍 void delete_book(Book** head, Book* book) { if (*head == book) { *head = book->next; } else { book->prev->next = book->next; } if (book->next != NULL) { book->next->prev = book->prev; } free(book); } // 打印所有书籍 void print_books(Book* head) { Book* curr = head; while (curr != NULL) { printf("Title: %s\n", curr->title); printf("Author: %s\n", curr->author); printf("Publisher: %s\n", curr->publisher); printf("ISBN: %s\n", curr->ISBN); printf("Price: %.2f\n\n", curr->price); curr = curr->next; } } // 测试 int main() { Book* head = NULL; add_book(&head, "The Great Gatsby", "F. Scott Fitzgerald", "Charles Scribner's Sons", "9780743273565", 9.99); add_book(&head, "To Kill a Mockingbird", "Harper Lee", "J. B. Lippincott & Co.", "9780060935467", 7.19); add_book(&head, "1984", "George Orwell", "Secker and Warburg", "9780451524935", 6.99); printf("All books:\n"); print_books(head); Book* book = find_book_by_title(head, "To Kill a Mockingbird"); if (book != NULL) { printf("Update book:\n"); update_book(book, "To Kill a Mockingbird (Updated)", "Harper Lee", "J. B. Lippincott & Co.", "9780060935467", 8.99); print_books(head); printf("Delete book:\n"); delete_book(&head, book); print_books(head); } else { printf("Book not found\n"); } return 0; } ``` 这个示例实现了以下功能: - 创建书籍节点的函数 `create_book_node` - 在链表末尾添加新的书籍的函数 `add_book` - 根据书名查找书籍的函数 `find_book_by_title` - 更新书籍信息的函数 `update_book` - 删除书籍的函数 `delete_book` - 打印所有书籍的函数 `print_books` 你可以根据自己的需求修改和扩展这个示例。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值