请用C语言写一个链表查询功能
时间: 2023-03-16 08:43:45 浏览: 74
您可以使用以下C语言代码来实现链表查询功能:struct node {
int data;
struct node *next;
};
/* 搜索给定值x在链表中的位置 */
int search(struct node *head, int x)
{
int position = 0;
struct node *current = head;
while (current != NULL)
{
position++;
if (current->data == x)
return position;
current = current->next;
}
return -1;
}
相关问题
用C语言写一个链表并且有增删改查功能
好的,我可以回答这个问题。链表是一种常见的数据结构,可以用来存储一系列的数据。在 C 语言中,可以通过定义一个结构体来表示链表的每个节点,然后使用指针来连接这些节点。以下是一个简单的链表实现,包括增加、删除、修改和查找功能:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构体
typedef struct Node {
int data;
struct Node* next;
} Node;
// 初始化链表
Node* initList() {
Node* head = (Node*)malloc(sizeof(Node));
head->next = NULL;
return head;
}
// 插入节点
void insertNode(Node* head, int data) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = data;
newNode->next = head->next;
head->next = newNode;
}
// 删除节点
void deleteNode(Node* head, int data) {
Node* p = head->next;
Node* pre = head;
while (p != NULL) {
if (p->data == data) {
pre->next = p->next;
free(p);
return;
}
pre = p;
p = p->next;
}
}
// 修改节点
void modifyNode(Node* head, int oldData, int newData) {
Node* p = head->next;
while (p != NULL) {
if (p->data == oldData) {
p->data = newData;
return;
}
p = p->next;
}
}
// 查找节点
Node* findNode(Node* head, int data) {
Node* p = head->next;
while (p != NULL) {
if (p->data == data) {
return p;
}
p = p->next;
}
return NULL;
}
// 打印链表
void printList(Node* head) {
Node* p = head->next;
while (p != NULL) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
int main() {
Node* head = initList();
insertNode(head, 1);
insertNode(head, 2);
insertNode(head, 3);
printList(head);
deleteNode(head, 2);
printList(head);
modifyNode(head, 1, 4);
printList(head);
Node* node = findNode(head, 3);
if (node != NULL) {
printf("找到了节点 %d\n", node->data);
} else {
printf("没有找到节点\n");
}
return ;
}
```
以上就是一个简单的链表实现,包括增加、删除、修改和查找功能。
用c语言写一个静态链表
可以使用结构体和指针来实现静态链表。首先定义一个结构体,包含数据和指向下一个节点的指针。然后定义一个数组来存储这些节点,每个节点的下标就是它的地址。最后,使用指针来操作这些节点,实现链表的功能。
以下是一个简单的静态链表的实现代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
typedef struct Node {
int data;
int next;
} Node;
Node list[MAX_SIZE];
int head = -1;
void init() {
for (int i = ; i < MAX_SIZE; i++) {
list[i].next = -2;
}
}
void add(int data) {
int i = ;
while (list[i].next != -2) {
i = list[i].next;
}
list[i].next = head;
head = i + 1;
list[head - 1].data = data;
}
void print() {
int i = head;
while (i != -1) {
printf("%d ", list[i - 1].data);
i = list[i - 1].next;
}
printf("\n");
}
int main() {
init();
add(1);
add(2);
add(3);
print();
return ;
}
```
这个代码实现了一个简单的静态链表,可以添加数据并打印链表中的所有数据。