小弟初学数据结构,初步写成了一个数组转移到单向链表并能查找第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);//加入该函数后运行报错,截图见上 }
你的main函数中search函数第一个参数head是个空指针,在search函数中使用head->next出错。create函数中也有空指针错误, 语言基础得牢靠才能更好学习数据结构
一周热门 更多>