| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 701 人关注过本帖
标题:利用尾插法建立的单链表为什么元素输出时还是逆序的 求大神指点
只看楼主 加入收藏
winner1995
Rank: 2
等 级:论坛游民
帖 子:64
专家分:41
注 册:2015-10-11
结帖率:88.89%
收藏
 问题点数:0 回复次数:9 
利用尾插法建立的单链表为什么元素输出时还是逆序的 求大神指点
#include<iostream.h>
#include<stdlib.h>
int n;
typedef struct node{
    int data;
    struct node *next;
}node, * list;
void createlist(list *L)
{int i;
    *L=(list)malloc(sizeof(node));
    (*L)->next=NULL;
    list p;
    cout<<"enter data's number:";
cin>>n;
    cout<<"enter data:";
for(i=0;i<n;i++)
{
    p=(list)malloc(sizeof(node));
    cin>>p->data;
    p->next=(*L)->next;
    (*L)->next=p;
}
}
void outputlist(list *L)
{
cout<<"your list is:"<<endl;
for(int i=0;i<n;i++)
{cout<<(*L)->next->data<<"\t";
*L=(*L)->next;
}
}
int main()
{list L1;
createlist(&L1);
outputlist(&L1);
return 0;
}
搜索更多相关主题的帖子: include number 元素 
2015-10-26 17:03
winner1995
Rank: 2
等 级:论坛游民
帖 子:64
专家分:41
注 册:2015-10-11
收藏
得分:0 
回复 楼主 winner1995今天晚上才猛的看明白 这个可以了
#include<iostream.h>
#include<stdlib.h>
int n;
typedef struct node{
    int data;
    struct node *next;
}node, * list;
void createlist(list *L)
{int i;
    *L=(list)malloc(sizeof(node));
    (*L)->next=NULL;
    list p,r;
    r=*L;
    cout<<"enter data's number:";
cin>>n;
    cout<<"enter data:";
for(i=0;i<n;i++)
{
    p=(list)malloc(sizeof(node));
    cin>>p->data;
    r->next=p;
    r=p;
}
}
void outputlist(list *L)
{
cout<<"your list is:"<<endl;
for(int i=0;i<n;i++)
{cout<<(*L)->next->data<<"\t";
*L=(*L)->next;
}
}
int main()
{list L1;
createlist(&L1);
outputlist(&L1);
return 0;
}

唯望君安~
2015-11-04 22:40
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你看什麽書學出這樣的代碼?

授人以渔,不授人以鱼。
2015-11-05 10:44
winner1995
Rank: 2
等 级:论坛游民
帖 子:64
专家分:41
注 册:2015-10-11
收藏
得分:0 
回复 3楼 TonyDeng
严蔚敏,吴伟民编的 数据结构
或许是我能力有限吧  不能怪书  哈哈

唯望君安~
2015-11-13 21:10
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 4楼 winner1995
C++是不推薦用.h頭的,那是兼容C代碼時的寫法。何況你還用malloc()這樣的C庫函數,C++用new。

授人以渔,不授人以鱼。
2015-11-13 22:27
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
C++標準庫有鏈表類,與其費神學C++的鏈表怎麽寫,不如花精力學習其標準庫的鏈表類怎麽用。

授人以渔,不授人以鱼。
2015-11-13 22:44
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你寫這個尾插法,有沒有在腦中想象過整體運動過程?不斷地在後面追加結點,你是不是在挪動了結點頭?加到最後,原先的頭在哪裏你找得到嗎?你那種傳參的方式,以及對參數做了什麽動作起什麽效果,自己要清楚才行呀。

授人以渔,不授人以鱼。
2015-11-13 22:52
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
對鏈表這樣的數據結構,你衹需要封裝兩個不同性質的插入函數即可:一個是後插,即新結點在被插入結點之後,此時衹要傳入被插入的那個結點的地址即可,頭結點不變,不用返回,也不用修改實參;一個是前插,即新結點在被插入節點之前,也仍然衹要被插入的結點作參數,但必須返回正確的頭結點(若不插在頭結點之前,頭不會變,但因亦有恰好插在頭前導致改變頭結點的情況,故應返回正確的頭)。兩種情況下,被插入的結點都不需要用二級指針,詳細解釋見本版我給另一個人的回帖(https://bbs.bccn.net/thread-458984-1-1.html)——看看別人的帖子吧,不要衹管問自己的。

這種東西,我沒專修《數據結構》也知道怎麽弄。

[此贴子已经被作者于2015-11-13 23:01编辑过]


授人以渔,不授人以鱼。
2015-11-13 22:59
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
我看很多人寫的鏈表程序,所寫的函數,總是要傳入頭結點,衹能說那是老師問題,學的那個又不明白鏈表的模型,光知道模仿書上脫褲子放屁的示例代碼,唉……又見應用鏈表的,也是衹知道做單向鏈表,殊不知實際應用中,雙向鏈表比單向好用得多,牢固之餘,代碼也容易寫,沒的給自己找麻煩幹什麽,就是沒徹底弄懂原理之故。

[此贴子已经被作者于2015-11-13 23:09编辑过]


授人以渔,不授人以鱼。
2015-11-13 23:05
winner1995
Rank: 2
等 级:论坛游民
帖 子:64
专家分:41
注 册:2015-10-11
收藏
得分:0 
回复 9楼 TonyDeng
恩恩  受教了thank you

唯望君安~
2015-11-15 23:47
快速回复:利用尾插法建立的单链表为什么元素输出时还是逆序的 求大神指点
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.039587 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved