一開始學習動態鏈表的時候沒認真,后來自己自學了一下,經過看了一些代碼后,發現每個人的寫法都不太一樣。于是我根據自己的理解寫了一個簡單的動態鏈表。請大佬幫忙看看我這種寫法有沒有問題?
#include <stdlib.h>
#include <iostream>
#include <conio.h>
using namespace std;
typedef struct LNode
{
int data;
struct LNode* next;
}LNode, * LinkList;
int main()
{
LinkList l, p;
l = (LNode*)malloc(sizeof(LNode));
l->next = NULL;
int i;
for(i=0;i<5;i++)
{
p = (LNode*)malloc(sizeof(LNode));
cin >> p->data;
cout << p->data << " ";
p->next = NULL;
l->next = p;
}
return 0;
}
uj5u.com熱心網友回復:
不對,因為每次都是l->next 指向了新建的節點,所以無法成為鏈。uj5u.com熱心網友回復:
不正確,因為p的next節點沒有連接起來,結果只有一個l節點和一個p節點對比一下以下的修改
p=l; //追加
for(i=0; i<5; i++) {
if(p!=l) {//如果不是頭節點就追加一個節點
p->next=(LNode*)malloc(sizeof(LNode));
p=p->next;//然后p指向新節點
}
cin>>p->data;
cout<<p->data<<“ “;
p->next=NULL;
}
uj5u.com熱心網友回復:
#include <iostream>
using namespace std;
typedef struct LinkNode
{
int data;
struct LinkNode *next;
}LNode, *Link;
int main()
{
Link pM, pHead = NULL;
pHead = new LNode;
pM = pHead;
int ret = 0;
cout << "輸入鏈表結點的值(-1結束)" << endl;
while ( 1 )
{
cin >> ret;
if ( ret != -1 )
{
Link pNode = new LNode;
pNode->data = ret;
pNode->next = NULL;
pM->next = pNode;
pM = pNode;
}
else
{
break;
}
}
Link pMove = pHead->next;
while ( pMove != NULL )
{
cout << pMove->data << " ";
pMove = pMove->next;
}
cout << "NULL" << endl;
while ( pHead != NULL )
{
Link pTemp = pHead;
pHead = pHead->next;
delete pTemp;
}
if ( pHead != NULL )
delete pHead;
system("pause");
return 0;
}
uj5u.com熱心網友回復:
資料結構對單鏈表進行資料排序 http://bbs.csdn.net/topics/392201633轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/133121.html
標籤:C++ 語言
上一篇:求在Linux下能夠實作拍照并存盤圖片到SD卡的功能
下一篇:順序鏈表輸出輸不出,求解答
