單迴圈鍊錶 C語言

2021-08-20 17:21:42 字數 1963 閱讀 9958

#include

#include

typedef int elemtype;

typedef int status;

typedef struct node

listnode;

typedef listnode *linklist;

//初始化單向迴圈鍊錶

void initlist(linklist l)

//判斷單向迴圈鍊錶是否為空

int listempty(linklist l)

p->next = l;

}//建立單向迴圈鍊錶(頭插法)

/*void listcreate(linklist l, int n)

}*///遍歷單向迴圈鍊錶

void listtar(linklist l)

printf("\n");

}//銷毀單向迴圈線性表

void clearlist(linklist l)

l->next = l;

}//將第i個位置的元素返回

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

if(p->next == l && j != i)

return 0;

*e = p->data;

return 1;

}//查詢元素e的位置

int locateelem(linklist l, elemtype e)

if(p->next == l && p->data != e)

return 0;

return i;

}//在第i個位置插入元素e

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

if(p == l && j != i)

return 0;

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

s->data = e;

s->next = p;

r->next = s;

return 1;

}//刪除第i個位置的元素

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

if(p->next == l && j != i)

return 0;

r->next = p->next;

*e = p->data;

free(p);

return 1;

}//單向迴圈鍊錶元素的個數

int listlength(linklist l)

return i;

}//將遞減單迴圈鍊錶插入乙個結點,使鍊錶依然有序

void insertnode(linklist l, elemtype e)

if(p->next == l && p->data > s->data)

p = p->next;

r = r->next;}}

int main()

else

printf("error\n");

printf("input listdelete i:");

scanf("%d", &i);

if(listdelete(l, i, &e))

else

printf("error\n");

printf("listlength l:%d", listlength(l));

printf("input insertnode e:");

scanf("%d", &e);

insertnode(l, e);

listtar(l);

clearlist(l);

}else

printf("list empty\n");

return 0;

}

c語言單迴圈鍊錶

ifndef sclist h define sclist h include include include define elemtype int typedef struct node node,pnode typedef struct list list node buynode elemt...

約瑟夫環 C語言 單迴圈鍊錶

約瑟夫環 問題描述 編號為1,2,n的n個人圍坐一圈,每人持乙個密碼 正整數 一開始任選乙個正整數作為報數上限值m,從第乙個人開始自1開始順序報數,報到m時停止。報m的人出列,將他的密碼作為新的m值,從他的下乙個人開始重新從1報數,如此下去,直至所有人全部出列為止。試設計乙個程式求出列順序。問題分析...

單迴圈鍊錶

頭插 尾插 顯示 頭刪 尾刪 按值插入 按位置插入 查詢 長度 逆序 清除 摧毀 初始化 排序 按位置刪除 按值刪除 可以進一步優化 ifndef sclist h define sclist h include typedef int elementtype typedef enum bool 鍊...