#include
#include
#include
using namespace std;
typedef struct LNode{
int data;
LNode* next;
}LNode,*List;
void creat(LNode* L){
List p ;
int n;
p= (List)malloc(sizeof(LNode));
L = p;
printf("請輸入1(添加)或0(不添加):\n");
cin >> n;
while (n)
{
p = (List)malloc(sizeof(LNode));
printf("請輸入節點數據:\n");
cin >> p->data;
p->next = p;
printf("請輸入1(添加)或0(不添加):\n");
cin >> n;
}
}
void get(LNode* L){
List p = L;
if (p == NULL)exit(0);
while (p->next != NULL)
{
printf("節點數據:%d\n", p->next->data);
p = p->next;
}
}
void main(){
LNode L;
creat(&L);
get (&L);
}
怎麼才能改變LNode的L變量,指針不懂,為什麼他沒有改變啊
才能改變LNode的L變量,你是想改變 L 的成員的值,還是改變 L 的地址呢?
如果是前者,你的代碼沒有問題,肯定是可以改變的;如果是後者,怎麼可能是後者!後者是一個變量,又不是指針,定義後的地址是不能改變的。
想要改,就必須使用指針。如定義:LNode L = (List)malloc(sizeof(LNode)); 再按 creat(&L); 來調用就可以改變 L 的地址 。