好贷网好贷款

编程求出单链表中倒数第m个元素,当m=0时,指链表最后一个元素

发布时间:2016-12-3 8:23:11 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"编程求出单链表中倒数第m个元素,当m=0时,指链表最后一个元素",主要涉及到编程求出单链表中倒数第m个元素,当m=0时,指链表最后一个元素方面的内容,对于编程求出单链表中倒数第m个元素,当m=0时,指链表最后一个元素感兴趣的同学可以参考一下。

此题编程时注意m=0的特殊情况,以及对于m大于链表长度n错误的处理 #include <tchar.h> #include <iostream> using namespace std; typedef struct student{ int data; struct student * next; } node; node* create() { node *head, *p, *s; int x, cycle = 1; head = (node *)malloc(sizeof(node)); p = head; while(cycle) { cout << "please input the data: "; cin >> x; cout << endl; if( x != 0) { s = (node *)malloc(sizeof(node)); s->data = x; p->next = s; p = s; } else { cycle = 0; } } p->next = NULL; head = head->next; return head; } int length(node *head) { int n = 0; node *p; p = head; while (p != NULL) { p = p->next; n++; } return n; } void print(node *head) { int n; node *p; p = head; n = length(head); cout << "There is " << n << " data in list\n" << endl; while(p != NULL) { cout << p->data << " -> "; p = p->next; } cout << endl; } node *FindLastMNode(node *head, int m) { node *p, *q; p = head; if(m != 0) { for(int i=0; i<m; i++) { if(p != NULL) { p = p->next; } else//处理m>n的情况 { return NULL; } } q = head; while(p != NULL) { p = p->next; q = q->next; } return q; } else//处理m=0的情况 { while(p->next != NULL) { p = p->next; } return p; } } int _tmain(int argc, _TCHAR * argv[]) { node *head, *temp; head = create(); print(head); temp = FindLastMNode(head, 0); if( temp != NULL) cout << temp->data <<endl; else cout << "m is large than the list!" << endl; return 0; }

上一篇:Linux中如何退出man命令
下一篇:(android 基础知识) AliasActivity(应用程序命别名)

相关文章

相关评论