迴圈單鏈表的實現

2021-07-23 23:27:08 字數 2434 閱讀 7242

定義:將單鏈表中終端節點的指標端有空指標改為頭節點,就使整個單鏈表形成乙個環,這種頭尾相接的單鏈表成為單迴圈鍊錶。

#define maxsize 1000 /* 儲存空間初始分配量 */

typedef int elemtype ;

typedef int status ;

typedef struct nodenode;

typedef struct node* linklist;

status getelem(linklist l ,int i , elemtype *e)

// printf("%p",p);

if(p==l || j>i)

*e = p->data;

}status listinsert(linklist *l , int i, elemtype e)

if( j>i)

s = (linklist)malloc(sizeof(node));

s->data = e ;

s->next = p->next;

p->next = s;

return ok ;

}status initlist(linklist *l) //注意這裡使用了二級指標 不用一級指標是因為l是在棧中新開闢的元素,

//和原p指向同一記憶體位址,而這裡修改了l的指向的記憶體空間,但指標p還是沒有變化,

//還造成了記憶體洩漏,在堆中申請的記憶體空間無法訪問

status listdelete(linklist *l , int i , elemtype *e)

if(j>i)

q = p->next;

p->next = q->next;

*e = q->data;

free(q);

return ok;

}void createlisthead(linklist*l ,int n )

}void createlisttail(linklist * l ,int n)

r->next = *l;

}status clearlist(linklist *l)

(*l)->next = *l; //頭節點的指標域為空

return ok;

}status listemety(linklist l)else

}int listlength(linklist l)

return i;

}/* 初始條件:順序線性表l已存在 */

/* 操作結果:返回l中第1個與e滿足關係的資料元素的位序。 */

/* 若這樣的資料元素不存在,則返回值為0

*/int locateelem(linklist l,elemtype e)

}int main()

printf("\n");

//頭插法

linklist head ;

createlisthead(&head,10);

linklist q1 =head->next;

while(q1!=head)

printf("\n");

//尾插法

linklist tail ;

createlisthead(&tail,10);

linklist q2 =tail->next;

while(q2!=tail)

printf("\n");

//得到第i個元素的值

int value;

getelem(p,3,&value);

printf("%d\n",value);

printf("\n");

//刪除第i個位置的節點

int value1;

listdelete(&p,3,&value1);

printf("%d\n",value1);

q = p->next;

while(q!=p)

printf("\n");

//清空鍊錶

printf("%d\n",p);

clearlist(&p);

printf("%d\n",p->next);

return

0;}

迴圈單鏈表的實現java

迴圈鍊錶 circle linked list 是另一種形式的鏈式儲存結構 它的特點是表中最後乙個節點的指標域指向頭結點 整個鍊錶形成乙個環,由此,從表中任一點出發均可以找到表中其他節點 package linklist 單向迴圈鍊錶 class element 有參構造方法 public elem...

迴圈單鏈表的簡單實現

迴圈單鏈表的實現 核心操作類似於單鏈表的實現.此次實現的是帶頭結點的單鏈表 此次實現更加注重函式封裝實現.include include define null null typedef int elemtype typedef struct lnode node,linklist init boo...

迴圈單鏈表

include include include include define random x rand x typedef int status typedef int elemtype typedef struct lnode lnode typedef struct linklist link...