用C语言创建一个数组并进行增删
时间: 2023-03-31 09:00:24 浏览: 82
操作。
可以使用C语言中的动态内存分配函数malloc和realloc来创建和修改数组。例如,以下代码创建一个包含5个整数的数组,并在第3个位置插入一个新的整数:
int *arr = (int*)malloc(5 * sizeof(int)); // 创建一个包含5个整数的数组
arr[2] = 3; // 将第3个位置的值设置为3
// 在第3个位置插入一个新的整数
arr = (int*)realloc(arr, 6 * sizeof(int)); // 扩展数组的大小
for (int i = 5; i > 2; i--) {
arr[i] = arr[i-1]; // 将后面的元素向后移动一位
}
arr[2] = 4; // 在第3个位置插入新的整数4
// 删除第4个位置的整数
for (int i = 3; i < 5; i++) {
arr[i] = arr[i+1]; // 将后面的元素向前移动一位
}
arr = (int*)realloc(arr, 4 * sizeof(int)); // 缩小数组的大小
注意,使用完动态分配的内存后,需要使用free函数释放内存,以避免内存泄漏。
相关问题
使用C语言创建一个整数型顺序表,并实现这个顺序表的增删查改操作
好的,对于这个问题,我可以直接回答。创建整数型顺序表可以使用C语言的数组。增加元素可以使用循环遍历数组并在末尾添加元素,删除元素可以将指定位置的元素删除并将后面的元素前移,查找元素可以使用循环遍历数组并在找到目标元素时返回其位置,修改元素可以通过指定位置定位元素并进行修改。这是一些基本的操作,你可以在C语言的语法规范中寻找更详细的实现方式。
用c语言写一个具有增删查找功能的通讯录
好的,我明白了。关于您的问题,以下是一个简单的C代码示例,实现了添加、删除、查找通讯录条目的功能。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME_LENGTH 50
#define MAX_PHONE_NUM_LENGTH 20
typedef struct {
char name[MAX_NAME_LENGTH];
char phone_num[MAX_PHONE_NUM_LENGTH];
} Contact;
Contact* create_contact(char* name, char* phone_num) {
Contact* contact = malloc(sizeof(Contact));
strncpy(contact->name, name, MAX_NAME_LENGTH);
strncpy(contact->phone_num, phone_num, MAX_PHONE_NUM_LENGTH);
return contact;
}
typedef struct {
int num_contacts;
Contact** contacts;
} AddressBook;
AddressBook* create_address_book() {
AddressBook* address_book = malloc(sizeof(AddressBook));
address_book->num_contacts = 0;
address_book->contacts = malloc(sizeof(Contact*) * 100); // 数组大小暂定为100
return address_book;
}
void add_contact(AddressBook* address_book, Contact* contact) {
address_book->contacts[address_book->num_contacts++] = contact;
}
void delete_contact(AddressBook* address_book, int index) {
free(address_book->contacts[index]);
for (int i = index + 1; i < address_book->num_contacts; i++) {
address_book->contacts[i - 1] = address_book->contacts[i];
}
address_book->num_contacts--;
}
int find_contact(AddressBook* address_book, char* name) {
for (int i = 0; i < address_book->num_contacts; i++) {
if (strcmp(address_book->contacts[i]->name, name) == 0) {
return i;
}
}
return -1;
}
int main() {
AddressBook* address_book = create_address_book();
// 添加通讯录条目
add_contact(address_book, create_contact("Alice", "123-456-7890"));
add_contact(address_book, create_contact("Bob", "234-567-8901"));
// 查找通讯录条目
int index = find_contact(address_book, "Alice");
if (index != -1) {
printf("Alice's phone number: %s\n", address_book->contacts[index]->phone_num);
} else {
printf("Alice is not in the address book.\n");
}
// 删除通讯录条目
index = find_contact(address_book, "Bob");
if (index != -1) {
delete_contact(address_book, index);
}
// 释放内存
for (int i = 0; i < address_book->num_contacts; i++) {
free(address_book->contacts[i]);
}
free(address_book->contacts);
free(address_book);
return 0;
}
```
这段代码实现了简单的通讯录功能,可以添加、删除、查找通讯录条目。在代码中,`create_contact`函数用于创建一个通讯录条目,`create_address_book`函数用于创建一个空的通讯录,`add_contact`函数用于向通讯录中添加一个条目,`delete_contact`函数用于删除通讯录中的一个条目,`find_contact`函数用于查找通讯录中是否存在某个条目。注意,在使用完通讯录后,需要释放分配的内存以避免内存泄漏。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)