雙向迴圈鍊錶 C語言

2021-08-20 18:22:24 字數 1722 閱讀 9450

#include

#include

typedef int elemtype;

typedef int status;

typedef struct node

listnode;

typedef listnode *linklist;

//雙向迴圈鍊錶初始化

void initlist(linklist l)

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

int listempty(linklist l)

//銷毀雙向迴圈鍊錶

void clearlist(linklist l)

l->next = l;

}//雙向迴圈鍊錶的長度

int listlength(linklist l)

return j;

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

void listcreate(linklist l, int n)

l->next = p;

p->prior = l;

}//建立雙向迴圈鍊錶(尾插法)

/*void listcreate(linklist l, int n)

l->prior = p;

p->next = l;

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

void listtra(linklist l)

if(p->next == l)

printf("%d", p->data);

printf("\n");

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

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

*e = p->data;

}//查詢元素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)

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

s->data = e;

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

else

return 1;

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

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

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

else

*e = p->data;

free(p);

return 1;

}//在值為x的結點之前插入乙個值為y的結點

void dinsertb(linklist l, elemtype x, elemtype y)

}int main()

else

printf("error\n");

printf("input dinsertb e, f:");

scanf("%d %d", &e, &f);

dinsertb(l, e, f);

listtra(l);

}else

printf("listempty\n");

return 0;

}

雙向迴圈鍊錶(C語言)

一 seqlist.h ifndef seqlist define seqlist typedef int datatype typedef struct dclnode node,pnode void dclinit pnode pphead 雙向迴圈鍊錶的初始化 void dclpushback...

C語言中的雙向迴圈鍊錶

單向鍊錶的構建,大家應該不陌生 include include define len sizeof struct node typedef struct node 建立乙個鏈式結構 tree void creatlist p2 next null 最後以null作為鍊錶的結束 ps 如果這裡是 p2...

C語言實現雙向迴圈鍊錶

list 雙向迴圈鍊錶,帶頭指標 struct list node 初始化頭指標 void list init head struct list node head 量表是否為空 是返回1,否返回0 int list is empty const struct list node head 鍊錶遍歷...