1. 程式人生 > >2019.04.09打卡

2019.04.09打卡

當前 width 刪除表 -a res null alloc spa 函數

單鏈表的刪除和尾插法創建部分

 1 int Remove(LinkList &first,int i,DataType &x){
 2     LinkNode *p=Locate(first,i-1);            //定位於第i-1個結點 
 3     if(p==NULL||p->next==NULL)
 4         return 0;
 5     LinkNode *q=p->next;        //用q保存被刪除結點的地址 
 6     p->next=q->next;            //重新拉鏈,將被刪除結點從鏈中取下 
7 x=q->data; //取出被刪除結點中的數據,釋放結點 8 free(q); 9 return 1; 10 } 11 //刪除表中第i個元素,通過引用型參數x返回該元素的值

 1 //尾插法創建單鏈表 
 2 #include "LinkList.h"
 3 void createListRear (LinkList &last,DataType endtag){            //endtag是結尾 
 4     DataType val;
5 scanf("%d",&val); 6 if(val==endtag) 7 last==NULL; 8 else{ 9 last=(LinkNode *)malloc(sizeof(LinkList)); //創建新結點 10 if(!last){ 11 printf("存儲分配錯誤!\n"); 12 exit(1); 13 } 14 last->data=val; 15 createListRear(last->next,endtag); //
遞歸創建後續鏈表 16 } 17 } 18 void main(void){ 19 LinkList L; 20 DataType endtag; 21 scanf("%d",&endtag); //輸入約定的輸入結束標誌 22 L=(LinkNode *)malloc(sizeof(LinkList)); 23 if(!L){ 24 printf("存儲分配錯誤!\n"); 25 exit(1); 26 } 27 LinkNode *rear=L; //尾指針,初始時指向頭結點 28 createListRear(rear->next,endtag); //遞歸建立單鏈表 29 printList(L->next); //調用了printList函數; 30 }


今日小結:p++與p->next 的區別

技術分享圖片

“假如你處理的是數組,那麽p指向當前的數組值,p++就是指向下一個數組值,因為數組的數值在內存裏面是排列在一起的,(p++主要用於連續的空間)

但是假如使用的是鏈表,那麽鏈表節點他們的內存位置不是排列在一塊的,鏈表節點之間的關系的唯一紐帶只有指針,就是p->next指向下一個,

所以p->next與p++不是等價的”

參考鏈接:

(https://zhidao.baidu.com/question/1576095080104499180.html)(https://blog.csdn.net/dongyanxia1000/article/details/51979931)

2019.04.09打卡