線性表之單鏈表

2021-10-08 19:10:17 字數 2318 閱讀 3642

一 帶頭結點的構建和插入

#include#includestruct lnodelnode,*linklist;

bool initlist(linklist &l)

l->next==null;

return true;

}bool listinsert(linklist&l,int i,int e)

lnode *p;

int j=0;

p=l;

while(p!=null&&jnext;

j++;

}if(p==null)

lnode *s=(lnode *)malloc(sizeof(lnode));

s->data=e;

s->next=p->next;

p->next=s;

return true;

}int main()

二 指定結點的後插操作

//指定結點的後插操作

bool insertnextnode(lnode *p,int e)

lnode *s=(lnode *malloc(sizeof(lnode)));

s->data=e;

s->next=p->next;

p->next=s;

return true;

}

三 指定結點的前插操作

//指定結點的前插操作

bool insertpriornode(lnode *p,int e)

lnode *s=(lnode *)malloc(sizeof(lnode));

s->next=p->next;

p->next=s;

s->data=p->data;

p->data=e;

return true;

}

示意圖:

四 按位序刪除(帶頭結點)

//按位序刪除(帶頭結點)

bool listdelete(linklist &l,int i,int &e)

lnode *p;

int j=0;

p=l;

while(p!=null&&jnext;

j++;

}if(p==null)

//i結點之後無結點

if(p->next==null)

lnode *q=p->next;

e=q->data;

p->next=q->next;

free(q);

return true;

}

五 刪除指定結點

//刪除指定結點

bool deletenode(lnode *p)

lnode *q=p->next;

p->data=p->next->data;

p->next=q->next;

free(p);

return true;

}

示意圖:

六 查詢

//按位查詢

lnode * getelem(linklist l,int i)

lnode *p;

int j=0;

p=l;

while(p!=null&&jnext;

j++;

}return p;

}//按值查詢

lnode * locateelem(linklist l,int e)

return p;

}

七 求表的長度

//求表的長度

int length(linklist l)

return len;

}

八 頭插法和尾插法建立鍊錶

//頭插法建立單鏈表

linklist list_headinsert(linklist &l)

return l;

}//尾插法建立單鏈表

linklist list_tailinsert(linklist &l)

r->next=null;

return l;

}

線性表之單鏈表

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...

線性表之單鏈表

零個或多個資料元素的有限序列,線性表中的元素是一對一的關係,除了第乙個元素和最後乙個元素外,其他元素都是首尾相接的。線性表有兩種儲存方式,一種是順序儲存結構,另一種是鏈式儲存結構。指用一段位址連續的儲存單元依次儲存線性表的資料元素。優點 無需為表示元素間的邏輯關係而增加額外的儲存空間 隨機查詢元素,...

線性表之單鏈表

template typenamet structnode 頭結點 如果鍊錶有頭節點,則鏈式結構中的第乙個節點稱為頭結點 其資料域可以儲存一些附加資訊,如鍊表長度 其指標域指向鍊錶中的第乙個節點。template class linklist linklist t a int n linklist ...