c++单向链表的查找函数请教。 财富值53

2016-10-14 11:57发布

小弟初学数据结构,初步写成了一个数组转移到单向链表并能查找第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 << "
==========所建立链表如下=============
" << 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);//加入该函数后运行报错,截图见上 }  
2条回答
东城 - 这个人很懒,什么都没留下
1楼 · 2016-10-14 11:47.采纳回答

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

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

一周热门 更多>