C C 實現線性表中的迴圈單鏈表

2021-10-05 14:41:12 字數 1718 閱讀 1773

資料結構

typedef struct lnodelnode, *clinklist;
單鏈表的原子操作實現

1.建立迴圈單鏈表

status listcreate_cl(clinklist &l, lnode* &tail, int n)

p->next = l; //表尾指向表頭

tail = p;

return ok;

}

2.刪除迴圈鍊錶

status listdestroy_cl(clinklist &l, lnode* &tail)

free(tail);

l = null;

tail = null;

return ok;

}

3.插入元素

status listinsert_cl(clinklist &l, lnode* &tail, int n, elemtype e)

if(p == l || n<0) //第n-1個節點不存在或者n<0

return error;

lnode *q;

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

if(!q)

exit(overflow);

if(p == tail) //更新表尾

tail = q;

q->data = e;

q->next = p->next;

p->next = q;

return ok;

}

4.追加元素

lnode *q;

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

if(!q)

exit(overflow);

q->data = e;

q->next = p->next;

p->next = q;

tail = q;

return ok;}

5.刪除元素

status  deleteelem_cl(clinklist &l, lnode* &tail, int n, elemtype &e)

if(p ==l || n<0) //第n個元素不存在 或 n<0

return error;

if(p == tail)

tail = q;

q->next = p->next; //將待刪除節點從鍊錶斷開

e = p->data;

free(p); //刪除節點

return ok;

}

6.獲取元素

status  getelem_cl(clinklist l,int n,elemtype &e)

if(p == l || n<0) //第n個元素不存在 或 n<0

return error;

e = p->data;

return ok;

}

7.獲取鍊錶長度

int listlength_cl(clinklist l)

return n;

}

完整**

線性表中順序表的實現和單鏈表的實現

線性表 線性表儲存結構 基類介面 public inte ce list 簡單實現 順序表 public class arraylist implements list 陣列初始長度 public arraylist int initialcapacity override public intsi...

線性表之單鏈表

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

線性表及單鏈表

一.頭指標與頭結點的異同 頭指標 頭指標是指鍊錶指向第乙個結點的指標,若煉表有頭結點,則是指向頭結點的指標。頭指標具有標識作用,所以常用頭指標冠以鍊錶的名字。無論鍊錶是否為空,頭指標均不為空,頭指標是鍊錶的必要元素。頭結點 頭結點是為了操作的統一和方便而建立的,放在第一元素的結點之前,其資料域一般無...