user-0 提问: 新手C++链表问题（寻找最大节点）

回复:
user: user-1
content: 数据结构对单链表进行数据排序 http://bbs.csdn.net/topics/392201633

user: user-2
content: #include <iostream> #include <cstdio> #include <cstdlib> using namespace std;  struct LinkList {     int data;     LinkList *next; };  void CreateList_L(LinkList *&L, int n) {     int i;     LinkList *p;      /*malloc的空间不对，应该是sizeof(LinkList)*/     L = (LinkList*)malloc(sizeof(LinkList));     L->next = NULL;     for (i = n; i > 0; --i)     {         p=(LinkList*)malloc(sizeof(LinkList));         scanf("%d", &p->data);         p->next = L->next;         L->next = p;     }  }  int main() {     int i,g;     // LinkList *ddd;     LinkList *dd;     LinkList *head;     CreateList_L(head,5);     //CreateList_L(ddd,5);     LinkList *p = head->next;     LinkList *q = p;   /*指向最大节点*/      while (p) {         if (p->data > q->data)             p = q;         p = p->next;     }      cout<<"Max node's data is " <<q->data<<endl; #if 0     for(i=1;i<=5;i++)     {         if(p<p->next)             //{g=p->data;}              p=p->next;         g=p->data;      }      cout<<g; #endif     return 0;  }   参考一下吧  malloc申请的空间不对，每个节点至少要2 * sizeof(int)个内存空间，为啥只申请一个字节呢。  求最大值节点，逻辑有点问题。对比代码参考一下吧

user: user-0
content: #include <iostream>  #include"malloc.h" using namespace std;   struct LinkList {  int data;  LinkList *next; };   void CreateList_L(LinkList *&L,int n) {   int i;  LinkList *p;  L=(LinkList*)malloc(1);   L->next=NULL;   for (i=n;i>0;--i)  {    p=(LinkList*)malloc(1);    scanf("%d",&p->data);    p->next = L->next;   L->next = p;   }    }    int main() { 	int i,result;     // LinkList *ddd;   LinkList *head;  CreateList_L(head,5);  //CreateList_L(ddd,5);  LinkList *p=head->next;    result=p->data;   // *g=p; for(i=1;i<=5;i++)  //循环五次   {  	//p=p->next; 	if(result<p->data)   //当p小于他的下一个的时候  	//{g=p->data;}    {	         	    //向后 跳  	    result=p->data; 		//cout<<result; 		//p=p->next; 		//cout<<result; 	}  	//g=p->data; //	*g=p;  p=p->next;  }  cout<<result;//打印最大值   return 0; } 为什么这样就能成功 不能用p->data 进行比较吗

user: user-0
content: 引用 5 楼 u011261943 的回复:[quote=引用 2 楼 a875052544 的回复:] 还想问一个 如果我要对一个单链表任意一个节点进行访问 我该怎么说 第一天上课 懵逼啊！！ 遍历链表，这个东西也不麻烦，建议找个程序看看就知道了。 [/quote] int main() { 	int i,result;     // LinkList *ddd;   LinkList *head;  CreateList_L(head,5);  //CreateList_L(ddd,5);  LinkList *p=head->next;    result=p->data;   // *g=p; for(i=1;i<=5;i++)  //循环五次   {  	 	if(p->data<p->next->data)   //当p小于他的下一个的时候  	//{g=p->data;}    {	         	    p=p->next;    //向后 跳  	    result=p->data; 	}  	//g=p->data; //	*g=p;     }  cout<<result;//打印最大值   return 0; } 错哪？？想不明白 每次输出都是最后一个

user: user-3
content: 引用 2 楼 a875052544 的回复:还想问一个 如果我要对一个单链表任意一个节点进行访问 我该怎么说 第一天上课 懵逼啊！！ 遍历链表，这个东西也不麻烦，建议找个程序看看就知道了。

user: user-3
content: 引用 3 楼 u011261943 的回复:先说两个问题， 1、排版不好看，看起来费劲，注意缩进对齐 2、变量命名太随意, d   ddd这类的没有含义的命名最好少用，就算只是测试用例，养成良好的编码习惯很有必要。  正题： for(i=1;i<=5;i++) {   if(p<p->next)     p=p->next;    g=p->data; } 再想想这段代码的逻辑，想象这段代码能不能取到链表的最小值 ----》》》想想再往下看--》》》 你的if判断用得不对，怎么能用指针地址作为判断条件？？你要取得是data最小的节点，而不是 地址值最小的节点sorry，是值最大的节点。链表节点里面，一个是成员存的下一个节点的地址，另一个成员存的是当前节点的data。 你要比较的是data，而不是下一个节点的地址。

user: user-3
content: 先说两个问题， 1、排版不好看，看起来费劲，注意缩进对齐 2、变量命名太随意, d   ddd这类的没有含义的命名最好少用，就算只是测试用例，养成良好的编码习惯很有必要。  正题： for(i=1;i<=5;i++) {   if(p<p->next)     p=p->next;    g=p->data; } 再想想这段代码的逻辑，想象这段代码能不能取到链表的最小值 ----》》》想想再往下看--》》》 你的if判断用得不对，怎么能用指针地址作为判断条件？？你要取得是data最小的节点，而不是 地址值最小的节点

user: user-0
content: 还想问一个 如果我要对一个单链表任意一个节点进行访问 我该怎么说 第一天上课 懵逼啊！！

user: user-0
content: 新手新手 求教