1、假設在長度大於1的單迴圈鍊錶中,既無頭結點也無頭指標。s為指向某個結點的指標,試編寫演算法刪除結點*s的直接前驅結點。
2、已知由單鏈表表示的線性表中,含有三類字元的資料元素(如:字母、數字和其它字元),設計演算法構造三個以迴圈鏈表示的線性表,使每乙個表中只含同一類的字元,且利用原表中的結點空間作為這三個表的空間。(頭結點可以另闢空間)
3、有一雙鍊錶,每個結點中除有prior、data和next域外,還有一訪問頻度域freq,在鍊錶被啟用前,其值均初始化為零。每當在鍊錶上進行一次locate(l,x)運算,元素值為x的結點中freq域的值增1,並使此鍊錶中結點保持按freq遞減的順序排列,以便使頻繁訪問的結點總是靠近表頭。設計滿足上述要求的locate演算法。
#include
#include
#include
using namespace std;
typedef struct clist//迴圈鍊錶結構體
clist,*clinklist;
int initlist(clinklist &l)//初始化迴圈鍊錶
void create(clinklist &l,int num)
if(num==2)//建立單鏈表
else//建立迴圈鍊錶
}void print(clinklist &l)
while(r!=l);
cout<>x;
while(s->data!=x) s=s->next;
p=s;//找到要刪結點的後繼
while(p->next->next!=s)
p=p->next;
if(p->next==l)
l=l->next;
q=p->next;
p->next=s;
delete q;
}void text1()
else if((p->data>=65&&p->data<=90)||(p->data>=97&&p->data<=122))
else
}if(a_a)
void bprint(blinklist &b)
cout<>x)//尾插法
bprint(b);
}void locate(blinklist &b,int x)
if(flag)
void text3()
}void menu()}}
int main()
雙鏈表 迴圈鍊錶
一 雙鏈表 對於雙鏈表,採用類似於單鏈表的型別定義,其dlinklist型別的定義如下 typedef struct dnode 宣告雙鏈表節點型別 dlinklist 1.建立雙聯表 1 頭插法 void createlistf dlinklist l,elemtype a,int n 頭插法建立...
雙鏈表和迴圈鍊錶小結
特點 方便查詢乙個節點的前,後相鄰節點 1 已知某個節點的位址,刪除他的時間o 1 修改p節點前驅節點的next指標和p節點後繼節點是prior指標 p prior next p next p next prior p prior 2 在某個節點的前後插入乙個節點的時間為o 1 2.迴圈鍊錶 1.迴...
迴圈鍊錶 迴圈雙鏈表 迴圈單鏈表
迴圈單 雙鏈表,建立 初始化 尾插 頭插 遍歷 插入 刪除 判空 部分函式採用過載 此處為c include include include using namespace std typedef struct lnodelnode,linklist typedef struct dnodednod...