系列文章目录
前言
《数据结构基础》c语言版 第2版,Ellis Horowitz著,朱仲涛译
4.2节,page120,习题2
一、题目描述
在链表中查找整数num,如果num在表中,函数返回指向该结点的指针,否则返回NULL
二、c++代码
代码如下:
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
typedef struct listNode{
int data;
struct listNode *link;
}listNode;
listNode* create_list(int length)
{
if(length<1)
printf("该链表没有元素!\n");
listNode *first = new listNode;
first->link = NULL;
listNode *p = first;
for(int i=1;i<=length;i++)
{
listNode *temp = new listNode;
temp->data = i+1;
temp->link = NULL;
p->link = temp;
p = temp;
}
return first;
};
listNode* find_num(listNode* list,int target)
{
listNode * temp;
temp = list->link;
while (temp!=NULL && temp->data!=target)
{
temp = temp->link;
}
return temp;
}
void print_list(listNode* list)
{
listNode *tmp;
tmp = list->link;
if(tmp==NULL) {
printf("链表中没有元素!\n");
return;
}
while (tmp)
{
printf("%3d",tmp->data);
tmp = tmp->link;
}
printf("\n");
}
int main() {
listNode *L;
int len;
int num;
printf("输入链表的长度:");
scanf("%d",&len);
L = create_list(len);
printf("创建的链表为:\n");
print_list(L);
printf("输入要查找的数:");
scanf("%d",&num);
listNode *p;
p = find_num(L,num);
if(p!=NULL)
{
printf("找到了对应元素\n");
} else{
printf("没有找到对应元素\n");
}
return 0;
}