c++单向链表的查找函数请教。

小弟初学数据结构,初步写成了一个数组转移到单向链表并能查找第k个元素的程序,报错而不知错误所在,敬盼指教!

#include<iostream>
using namespace std;

class Node  //构造一个名为Node的解构,它具有两个特征属性:数据域,链接域
{
public:
    int data;
    Node *next;
    void create_output(int a[], int n);
};

void create_output(int a[],int n) 
{

    Node *p = NULL;  //用于确定当前节点
    Node *node = NULL;
    Node *head = NULL;  //头节点
    for (int i = 1; i <= n; i++)  //从1到n
    {
    node = new Node;//建立一个归属于Node的对象node
    node->data = a[i - 1];
    if (head == NULL)  //当首节点为空时,即初始状态时,首节点为刚刚建立的新节点
    {
    head = node;
    }
    else  //当首节点不为空时,p的链接域指向node
    p->next = node;
    p = node;  //node为当前节点
    if (i == n)  //完成最后一个节点的建立后,最后一个节点的链接域指向空
    {
    p->next = NULL;
    }
    }                                              //这部分独立出链表的构造函数Node *Create(Node *head)
    //输出链表
    p = head;  //当前结点为首节点
    cout << "数组已导入至链表!" << endl;
    cout << "\n==========所建立链表如下=============\n" << endl;
    while (p != NULL)  //当前节点不为空时,输出其数据域存储的数据
    {
    cout << p->data << "  ";  //还可以构造个for循环显示这是第i个元素
    p = p->next;  //下一个节点为当前节点
    }
    cout << endl;                           //这部分独立出链表的输出函数void Print(Node * head)
};

void search(Node*head, int k)
{
    int i = 0;
    Node *htemp;
    htemp = head;      //保存链表头指针 
    while(i<k)     //找到该结点 
    {
        htemp = htemp->next;
        i++;
    }
    cout<<"查找的元素所包含的数据为:"<<htemp->data;      //返回指向第k个结点的指针 
}

void main()
{
    Node *head=NULL;
    int a[5] = { 1, 2, 3, 4, 5 }, n = 5;
    create_output(a,5);
    search(head, 3);//加入该函数后运行报错,截图见上
}

p->next = node;
p == null,所以没有next

你的main函数中search函数第一个参数head是个空指针,在search函数中使用head->next出错。create函数中也有空指针错误, 语言基础得牢靠才能更好学习数据结构

既然是链表, 就不要用
while(i<k) //找到该结点

{
    htemp = htemp->next;
    i++;
}
这样的方式就会有问题, 必须加上htemp的判空操作.
  • template定义中typename关键字看不懂
  • ++i和i++的区别?
  • 无数个九宫格组成的矩阵,随机选一个点为中心,计算出它周围的8个格子内最大且比它大的格子做下一个中心,有什么简洁优美的计算方法吗?
  • VC2008怎么解决重装后得重新安装的问题?
  • ubuntu如何查看C语言程序执行时间和程序的内存使用情况?
  • C#内容页中按钮事件如何操作母版页上的元素
  • Chrome45不再支持npapi了,请问有什么别的方式实现网页跟客户端交互呢?
  • “指针”是成熟的编程语言必须具有的概念吗?
  • C# 七牛云上传,我用的是QiNiu2.0 和newtonsoft.json.net2.0 为什么还能出现这样的错误
  • 又拍云C SDK返回401
  • 通过Javascript触发的FileUpload控件无法获取文件名