C++ 链表插入 运行时错误

void push_front (const T &newItem)
{
Node *newHead = new Node;
newHead -> item = newItem;
newHead -> next = head;
head = newHead;
} // push_front

void pop_front ()
{
Node *oldHead = head;
head = head->next ;
delete oldHead;
}// pop_front

void push_back (const T &newItem )
{
Node *newNode = new Node;
newNode->item = newItem;
Node *middleNode = head;
while( middleNode->next != NULL)
{
middleNode = middleNode ->next ;
}
middleNode->next = newNode;
}

void pob_back()
{
Node *middleNode = head;
Node *middleNode_next = middleNode->next ;
while(middleNode_next->next != NULL)
{
middleNode = middleNode->next ;
middleNode_next = middleNode->next ;
}
middleNode->next = NULL:
delete middleNode_next;
}

该头文件的一部分 用来在一个单向链表中插入和删除头尾节点 并进行一个时间复杂度的实验 .cpp 文件中的一部分如下

cin >> n;
start_time = clock();
for (int i = 0; i < n; i++)
myLinked.push_front (i);
// Calculate how long the task took:
finish_time = clock();
elapsed_time = finish_time - start_time;
cout << "front_push"<<elapsed_time<<endl;

start_time = clock();
for (int i = 0; i < n; i++)
myLinked.push_back (i);
// Calculate how long the task took:
finish_time = clock();
elapsed_time = finish_time - start_time;
cout << "front_back << elapsed_time << endl;

编译能够通过 但是运行时出现问题 而且只有在尾部插入时才会有问题 我猜好像是那个循环有问题 但具体不知道怎么解决 请哪位帮帮忙 谢谢了

head要初始化为NULL。当head为NULL时,push_back,pop_front,pop_back会出错。其他的没看出来什么问题。
温馨提示:内容为网友见解,仅供参考
无其他回答

C++单链表,能运行正确结果但总提示.exe已停止工作
using namespace std;class node { public :int data;node *next;node(int d = 0) { data = d; next = NULL; } };class chain { private :node *head;int num;public :chain() { head = NULL;num = 0; } void delall() { node *pdel;while(head != NULL ) { pdel = head...

C++链表中插入结点 参数的问题
(10)删除链表中所有结点算法(这里不是析构函数,但功能相同)输入:无前置条件:单链表存在动作:清除单链表中所有的结点。输出:无后置条件:头指针指向空template <class datatype>void LinkList<datatype>:: FreeList()\/\/释放单链表{ Node<datatype> *p,*q; p=head->next; while (p!=NULL) {q=p; p=p->...

c++运行异常,delet函数出错
改了 print 跟 delet 你看看我改了哪 不懂百度hi最好 void delet(list head,int num1){ type * pb=head->next;while(pb&&pb->num!=num1){ pb=pb->next;} \/\/查找位置 struct product* temp = head->next;while(temp->next!=pb){ temp = temp->next;} if(pb->next==NULL)pb...

怎样更好的理解C++中的链表的使用?
接着,使用尾插法的话,也就是先要找到火车尾,即链表的尾指针。然后把自己要加进去的车厢挂到火车的最后面。最后标记这节车厢为火车尾(把地址赋值给尾指针)。使用头插法的话,就是先找到火车头,即链表的头指针。然后把头指针后面的那节车厢挂到你要插入链表的那节车厢的后面。最后在把插入链表...

C++中带头节点的动态链表,头节点指针内存分配出错
如果没有first = new Node的话,就代表first没有指向一段内存,所以你要引用其中的东西肯定会崩溃,指针必须指向内存,不然就是所谓的野指针,而p指向first,意思是p和first指向同一段内存,其实还是没内存不是?所以出错了,记住一点就是指针必须有指向的内存 ...

c++stl <list>插入时,如何对链表中间的任意位置插入元素
没有直接根据第几个元素来插入的函数,不过可以这样来插入第n个元素 list<int>::iterator j = a.begin();for(i = 0;i < n && j!= a.end();++i)++j;a.insert(j,5,100);读任意一个元素也可以用同样方法

以下是我编的一个C++ 单链表,为什么输出的结果是 一串 -842150451_百...
void LinkList::LinkInsert(int adata, int bdata){ LinkNode *p, *q, *s;s = (LinkNode*)new(LinkNode);q = (LinkNode*)new(LinkNode);p = (LinkNode*)new(LinkNode);bdata = s->data; \/\/这里写反了。。。 s->data=bdata p=head;

C++数据结构中单链表的插入中newnode->link=current->link是什么意思...
link是一般指向下一个节点的指针,比如序列1 3 4 5 在1 3之间插入2,原来1->link指向的3,插入2之后自然就要让2->link指向3了,2->link=1->link就是你问题里那个代码的一个实例。

C++链表插入值为x的结点
{ int data;\/\/增加的行 struct node *next;\/\/增加的行 };\/\/增加的行 struct node *insert(node *head, int x){ struct node *newnode, *p, *q;newnode = new node;newnode->data = x; \/\/增加的行 p = head;if (head == NULL){ head = newnode;newnode->next = NULL;return...

C++中如何把一个链表中的数据输出到磁盘,再把数据从磁盘读出来构成链表...
1,数据输出到磁盘:遍历链表,对每个节点输出到磁盘 2,数据从磁盘读出来构成链表,遍历数据文件,对每一组数据构建一个对象,插入到链表中 你是想要代码吗?

相似回答