小弟初学数据结构,初步写成了一个数组转移到单向链表并能查找第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