以下算法用于在带头结点的单链表h中查找第一个值为x的结点,找到后返回其逻辑序号(从1开始),否则返回0。
#include<stdio.h>
#include<stdlib.h>
typedef struct node{
int data;
struct node *next;
}LNode;
int findx(LNode *h,int x){
LNode *p=h-> next;
int i=1;
while(p!=NULL&&p->data!=x){
i++;
p=p->next;
}
if(p==NULL)
return 0;
else
return i;
}
LNode* createList(int arr[], int n) {
if (n <= 0) return NULL;
LNode* head = (LNode*)malloc(sizeof(LNode));
head->next = NULL;
LNode* tail = head;
for (int i = 0; i < n; i++) {
LNode* newNode = (LNode*)malloc(sizeof(LNode));
newNode->data = arr[i];