ps:1、p、l的結點都是指標型別
2、頭結點插入與輸出的順序相反
3、注意左值與右值的區別
p->next=q->next; //q->next是指到的下乙個結點,非指標本身;p->next是指標本身(即p的指標域) (與左值右值有關)
4、後移用p=p->next;不用 p++; 因為位址不連續
p->next; 表示指標變數指向指標域(結構體裡的叫指標域,結構體外指向結點的叫結點指標、指標變數)
5、結構體可模擬 typedefintstatus;
typedefstruct lnodelnode,*linklist; //linklist 等價於 struct lnode * (結構體指標) ,lnode 等價於 struct lnode (結構體本身)執行清空操作後【 cleanlist(linklist &l) 】的情況如下圖,但不知道為什麼注釋free(p);這行就可以執行清除操作了,但空間好像沒放出來吧。。。
解決free();中止問題:
void hcreate(linklist &l) //多了乙個1? 是後面的「1.***插入建立」裡的1.。。 輸出空行就可以了
}
free(p);//刪除p指向結點所佔的記憶體,不是刪除p本身所佔的記憶體
l的malloc的sizeof裡是linklist,p的malloc的sizeof裡是lnode
sizeof(linklist)!=sizeof(lnode)鍊錶結點的指標大小不等於鍊錶結點的大小
申請空間將指標當成了結點,釋放時越界
return error;的情況:
完整**:
#include#include#include#define ok 1
#define overflow -2
#define error 0
typedef int elemtype;
typedef int status; //兩個插入都有問題(已解決)
typedef struct lnode
lnode,*linklist;
//頭插入建立,輸出順序相反
void hcreate(linklist &l) //多了乙個1? 是後面的「1.***插入建立」裡的1.。。 輸出空行就可以了
}void rcreate(linklist &l) //多了乙個1? 是後面的「1.***插入建立」裡的1.。。
}status listinsert(linklist &l) //i在定義的時候要=1!!
if(!p||j>i-1) return error;
s=(linklist)malloc(sizeof(lnode)); //s是新結點
if(!s) return overflow;
s->data=e;
s->next=p->next;
p->next=s;
return ok;
}status listdelete(linklist &l) //被迫中止?——>i在定義的時候要=1!!
q=p->next;
p->next=q->next; //q->next是指到的下乙個結點,非指標本身;p->next是指標本身 (與左值右值有關)
e=q->data;
free(q);
return ok;
if(!(p->next)||j>i-1) return error;
}void output(linklist l)
}status linklength(linklist l)
return i;
}status getelem(linklist &l,int i)
e=p->data;
return e;
}status locateelem(linklist &l,elemtype e)
if(p->next=null && p->data!=e)
return error;
else
return i;
}void cleanlist(linklist &l)
}void main()
break;
case 9:cleanlist(l);break;
case 0:exit(0);break;
} }}
線性表之單鏈表
cpp view plain copy linkedlist linc 2013.2.26 include include include define ok 1 define error 1 define ture 1 define false 0 struct node typedef stru...
線性表及單鏈表
一.頭指標與頭結點的異同 頭指標 頭指標是指鍊錶指向第乙個結點的指標,若煉表有頭結點,則是指向頭結點的指標。頭指標具有標識作用,所以常用頭指標冠以鍊錶的名字。無論鍊錶是否為空,頭指標均不為空,頭指標是鍊錶的必要元素。頭結點 頭結點是為了操作的統一和方便而建立的,放在第一元素的結點之前,其資料域一般無...
線性表之單鏈表
零個或多個資料元素的有限序列,線性表中的元素是一對一的關係,除了第乙個元素和最後乙個元素外,其他元素都是首尾相接的。線性表有兩種儲存方式,一種是順序儲存結構,另一種是鏈式儲存結構。指用一段位址連續的儲存單元依次儲存線性表的資料元素。優點 無需為表示元素間的邏輯關係而增加額外的儲存空間 隨機查詢元素,...