迴圈鍊錶的概念主要就是讓單鏈表的尾節點的指標不為空並且指向頭節點。像這樣的迴圈鍊錶和普通單鏈表除了判斷條件幾乎沒有任何區別,判斷條件就是從p->next是否為空改為p->next是否等於頭節點,如果等於頭節點則迴圈結束。
#include #include typedef int eletype;
typedef struct nodenode;
typedef node *linklist;
void initf(linklist *l)
}void getfele(linklist l,int index,eletype *e)
*e=p->data;
}void insertfele(linklist *l,int index,eletype e)
linklist s;
s=(linklist)malloc(sizeof(node));
s->data=e;
s->next=p->next;
p->next=s;
}void deletefele(linklist *l,int index)
linklist r=p->next;
p->next=r->next;
free(r);
}void clea***ll(linklist *l)
(*l)->next=*l;
}void displayflinklist(linklist l)
printf("\n");
}void main()
將兩個迴圈鍊錶合併在一起需要定義乙個尾指標,正常的乙個迴圈鍊錶尾指標指向頭節點,將兩個迴圈鍊錶合併則是讓第乙個尾指標指向第二個鍊錶的第乙個資料節點(這裡不指向第二個鍊錶的頭節點),讓第二個尾指標指向第乙個鍊錶的頭節點。例如有兩個迴圈煉表記作a、b,weia是鍊錶a的尾指標,weib是鍊錶b的尾指標。合併兩個鍊錶的實現**如下:
p=weia->next; p代表a的頭節點同時也是新鍊錶的頭節點
weia->next=weib->next->next; 讓鍊錶a的尾指標指向鍊錶b的第乙個有資料的節點
weib->next=p; 讓鍊錶b的尾指標指向鍊錶a的頭節點也就是p
free(p); 將p釋放掉
***這裡p必須定義
資料結構學習筆記 鍊錶
表示式的計算 表示式的計算涉及到棧的操作 對於表示式 a b c d e f 演算法 用到兩個棧,分別是符號棧和運算元棧。輸入表示式時,為了表示表示式輸入完畢,在表示式的最後加上 號,也就是說輸入的表示式為 a b c d e f 首先設定各個符號的優先順序,和 的優先順序為0,也就是最低的 和 的...
資料結構學習筆記 鍊錶
2.建立鍊錶 3.單向和雙向迴圈鍊錶 4.總結 struct list node 首先了解鍊錶的組成部分 說明 頭節點 在單鏈表的第乙個結點之前附設乙個結點,它沒有直接前驅,稱之為頭結點,頭結點的資料域可以不儲存任何資訊,指標域指向第乙個節點 首節點 的位址。頭結點的作用是使所有鍊錶 包括空表 的頭...
資料結構學習筆記三 迴圈鍊錶及雙向鍊錶
一 迴圈鍊錶 首位相接的鍊錶,將單鏈表的尾指標指向表頭結點,就得到了單迴圈鍊錶,一般,在迴圈鍊錶中設定乙個頭結點,這樣空的迴圈鍊錶就是自成迴圈的頭結點表示 另外多採用 尾指標表示單迴圈鍊錶,比如尾指標是rear,則rear next next和rear分別表示頭結點和尾結點。優點 從任意結點都可以訪...