第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

p2是一個只分配過一次內(nèi)存的存儲空間,每次都把p1往p2里寫不會覆蓋嗎?

p2不是只在循環(huán)體前分配過一次內(nèi)存嗎?第二次賦值后為什么沒有覆蓋掉之前的節(jié)點?我腦袋有點轉(zhuǎn)不過來

正在回答

3 回答

這是鏈表的知識啊 else?p2->next?=?p1; ?在這句代碼里面P2->next ?指向了P1 ?然后把P1的值付給了P2 ?這個時候的 P2是另外一個內(nèi)存空間 ? 下一次用是不會覆蓋上一次的地方的 ?P2最后會指向 最后一個節(jié)點 ?只需要找到頭指針 ?根據(jù)鏈表的性質(zhì)就可以輸出整個鏈表了?

1 回復 有任何疑惑可以回復我~
#1

有話好說別打臉 提問者

謝謝,聽你這么解釋一下腦子好像轉(zhuǎn)過彎來了
2015-12-03 回復 有任何疑惑可以回復我~
#2

有話好說別打臉 提問者

非常感謝!
2015-12-03 回復 有任何疑惑可以回復我~
//動態(tài)鏈表??同樣具有頭指針??每個節(jié)點包含數(shù)據(jù)和指向下一個節(jié)點的指針

#include<stdio.h>
#include<malloc.h>
struct?weapon?{
	int?price;
	int?atk;
	struct?weapon?*?next;?//?定義鏈表結(jié)構(gòu)體?這行是指針
};

struct?weapon?*?create(){??//創(chuàng)建鏈表的函數(shù)
	struct?weapon?*head;??//頭指針
	struct?weapon?*p1,?*p2;?//兩個指針變量?一個指向新創(chuàng)的?一個指向上一個節(jié)點
	int?n=0;?//計算節(jié)點個數(shù)
	p1=p2=(struct?weapon?*)malloc(sizeof(struct?weapon));?//malloc?分配內(nèi)存塊的函數(shù)??sizeof?判斷數(shù)據(jù)類型長度符
	scanf("%d,%d",&p1->price,&p1->atk);?//輸入數(shù)據(jù)到第一個節(jié)點
	head=NULL;?//初值置空
	while(p1->price!=0){??//判斷輸入結(jié)束條件
		n++;
		if(n==1)?head=p1;??//第一個節(jié)點讓head指向這個節(jié)點
		else?p2->next?=?p1;??//如果不是第一個節(jié)點?讓上一個節(jié)點的next指向新節(jié)點

		p2=p1;??//每一次把新節(jié)點保存到p2
		p1=(struct?weapon?*)malloc(sizeof(struct?weapon));?//給p1重新分配空內(nèi)存塊
		scanf("%d,%d",&p1->price,&p1->atk);?//繼續(xù)往p1寫入數(shù)據(jù)??(從else開始執(zhí)行)
	}
	p2->next?=?NULL;?//寫入完成后給最后一個節(jié)點的指向賦空
	return?(head);
}

int?main(){
	return?0;
}



0 回復 有任何疑惑可以回復我~

能把代碼弄出來嗎??

0 回復 有任何疑惑可以回復我~
#1

有話好說別打臉 提問者

下面補上了按自己理解注釋的代碼,就是第24行那個p2=p1我不理解,為什么可以循環(huán)往p2賦值并且生成鏈表
2015-12-03 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

p2是一個只分配過一次內(nèi)存的存儲空間,每次都把p1往p2里寫不會覆蓋嗎?

我要回答 關(guān)注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號