亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C語言雙向鏈表實現根據使用頻率安排元素位置的功能實例代碼

2020-05-23 13:49:03
字體:
來源:轉載
供稿:網友

C語言雙向鏈表應用

前言:

平時使用音樂播放器時,播放列表中的歌曲可以很方便地進行增添,刪除,去重等操作。但其本質都可以抽象成一個雙向鏈表。為了更方便用戶的使用,我認為還可以增加一個將最常播放的音樂放在播放列表的頭部的功能,那么如何實現呢?

請看代碼:

#include<stdio.h>#include<stdlib.h>#include<time.h>#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0typedef int status;typedef int elemtype;typedef struct node{  elemtype data;  int freq;  struct node * next;  struct node * prior;}node;typedef struct node* dlinklist;status visit(elemtype c){  printf("%d ",c);}/*雙向鏈表初始化*/status initdlinklist(dlinklist * head,dlinklist * tail){  (*head)=(dlinklist)malloc(sizeof(node));  (*tail)=(dlinklist)malloc(sizeof(node));  if(!(*head)||!(*tail))    return ERROR;  /*這一步很關鍵*/   (*head)->prior=NULL;  (*tail)->next=NULL;  (*head)->freq=0;  (*tail)->freq=0;   /*鏈表為空時讓頭指向尾*/  (*head)->next=(*tail);  (*tail)->prior=(*head);}/*判定是否為空*/status emptylinklist(dlinklist head,dlinklist tail){  if(head->next==tail)    return TRUE;  else    return FALSE;} /*尾插法創建鏈表*/ status createdlinklist(dlinklist head,dlinklist tail,elemtype data){  dlinklist pmove=head,qmove=tail,pinsert;  pinsert=(dlinklist)malloc(sizeof(node));  if(!pinsert)    return ERROR;  else{    pinsert->data=data;    pinsert->prior=pmove;    pinsert->next=pmove->next;    pmove->next->prior=pinsert;    pmove->next=pinsert;  }}/*正序打印鏈表*/ status traverselist(dlinklist head,dlinklist tail){  dlinklist pmove=head->next;  while(pmove!=tail){    visit(pmove->data);    pmove=pmove->next;  }  printf("/n");}status traverselist2(dlinklist head,dlinklist tail){  dlinklist pmove=head->next;  while(pmove!=tail){    visit(pmove->freq);    pmove=pmove->next;  }  printf("/n");}/*在鏈表頭插入元素*/status inserthead(dlinklist head,dlinklist tail,elemtype data){  dlinklist pinsert;  pinsert=(dlinklist)malloc(sizeof(node));  pinsert->data=data;  pinsert->next=NULL;  pinsert->prior=NULL;  tail->prior->next=pinsert;  pinsert->prior=tail->prior;  pinsert->next=tail;  tail->prior=pinsert;  return OK;}/*按使用頻次排序*/ status locateorder(dlinklist head,dlinklist tail,elemtype data){  dlinklist pmove=head->next,qmove;  while(pmove!=tail&&pmove->data!=data)    pmove=pmove->next;  if(pmove==tail){    printf("未找到/n");    return ERROR;  }  else{    pmove->freq++;    qmove=pmove->prior;    while(qmove!=head&&qmove->freq<pmove->freq)//向前尋找比pmove->freq大的qmove->freq       qmove=qmove->prior;    if(qmove->next!=pmove){//如果找到的qmove和pmove不是直接的前驅后繼關系      pmove->next->prior=pmove->prior;      pmove->prior->next=pmove->next;//將pmove取下      pmove->prior=qmove;      pmove->next=qmove->next;      qmove->next->prior=pmove;      qmove->next=pmove;//插到qmove之后    }  }}int main(void){  dlinklist head,tail,pmove=head;  int i=0;  initdlinklist(&head,&tail);  for(i=0;i<10;i++)    inserthead(head,tail,i);  printf("未經過排序的鏈表為/n");  traverselist(head,tail);  printf("在按使用頻率排序后的鏈表為:/n");   locateorder(head,tail,5);  for(int i=0;i<3;i++){    locateorder(head,tail,6);  }  traverselist(head,tail);  printf("各元素使用頻率為/n");  traverselist2(head,tail);}

要實現這一功能,最重要的函數是locateorder(),其實現思路是:如果某個元素的使用頻率不為0,則定義一個向鏈表頭移動的游標,尋找一個比該元素使用頻率高的元素,將該元素插到找到的元素之后即可。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲视频在线观看| 日韩成人av一区| 日韩av电影在线免费播放| 国产精品日日摸夜夜添夜夜av| 国产精品一久久香蕉国产线看观看| 欧美日韩国产影院| 国产精品福利小视频| 日韩最新在线视频| 亚洲无限乱码一二三四麻| 国内免费精品永久在线视频| 欧美巨乳在线观看| 欧美精品www在线观看| 裸体女人亚洲精品一区| 国内偷自视频区视频综合| 久久人人爽人人爽人人片亚洲| 亚洲丝袜av一区| 久久影视免费观看| 91久久精品国产91久久| 国模视频一区二区| 日韩在线播放av| 久久精品影视伊人网| 中文字幕精品在线视频| 成人国产精品一区二区| 国产精品美乳在线观看| 91精品国产综合久久香蕉的用户体验| 成人黄色片网站| 亚洲欧美日本另类| 国产精品网站视频| 超薄丝袜一区二区| 久久久电影免费观看完整版| 97国产成人精品视频| 正在播放国产一区| 国产精品尤物福利片在线观看| 性欧美办公室18xxxxhd| 国产日本欧美一区二区三区| 日本欧美在线视频| 亚洲网站视频福利| 欧美性生交xxxxxdddd| 91日韩在线视频| 亚洲成人久久电影| 91人人爽人人爽人人精88v| 日韩视频在线免费| 国产999精品久久久影片官网| 日韩中文字幕在线| 欧美老女人bb| 黑人巨大精品欧美一区二区免费| 欧美成在线视频| 98精品国产自产在线观看| 国产日本欧美一区二区三区在线| 91精品久久久久久久久久久久久| 国产亚洲一区二区精品| 国产精品国模在线| 国产视频精品免费播放| 最近的2019中文字幕免费一页| 欧美一区二区.| 亚洲精品电影在线观看| 亚洲人线精品午夜| 狠狠躁18三区二区一区| 亚洲国产91精品在线观看| 欧美一级成年大片在线观看| 69**夜色精品国产69乱| 97超级碰碰碰| 国产精品久久av| 国产成人+综合亚洲+天堂| 久久成人一区二区| 亚洲大胆人体视频| 91精品国产乱码久久久久久蜜臀| 久久露脸国产精品| 性色av一区二区三区| 亚洲男人的天堂在线播放| 国产精品一区二区电影| 在线观看欧美日韩| 欧美在线观看日本一区| 国产91免费看片| 青青久久av北条麻妃海外网| 精品欧美激情精品一区| 久久中文久久字幕| 91po在线观看91精品国产性色| 在线激情影院一区| 亚洲欧美中文日韩在线| 中文字幕亚洲一区二区三区| 国产精品视频在线观看| 欧美激情视频在线观看| 神马久久桃色视频| 欧美国产精品人人做人人爱| 日韩一二三在线视频播| 97香蕉超级碰碰久久免费的优势| 成人妇女淫片aaaa视频| 国产一区二区三区网站| 亚洲欧美中文日韩v在线观看| 日韩免费视频在线观看| 大胆欧美人体视频| 国产美女扒开尿口久久久| 亚洲色图25p| 欧美亚洲午夜视频在线观看| 久久精品亚洲热| 国产精品99久久久久久人| 日韩一区二区三区xxxx| 亚洲性生活视频在线观看| 欧美日韩999| 亚洲第一中文字幕在线观看| 亚洲欧美日韩中文在线| 久久色免费在线视频| 国产在线999| 992tv在线成人免费观看| 亚洲白虎美女被爆操| 国产成人精品电影久久久| 亚洲第一免费播放区| 九九热精品视频| 色哟哟亚洲精品一区二区| 欧美老少做受xxxx高潮| 欧美影院久久久| 亚洲欧洲免费视频| 国产中文字幕亚洲| 91亚洲精品一区| 久久精品视频在线| 91sa在线看| 色播久久人人爽人人爽人人片视av| 国产精品羞羞答答| 一区二区三区视频在线| 欧美区二区三区| 日韩大陆毛片av| 欧美一级免费视频| 亚洲精品av在线| 91久久国产精品| 国产视频精品一区二区三区| 日韩久久精品成人| 久久精品中文字幕免费mv| 中文字幕av一区二区| 亚洲人成电影网站| 4p变态网欧美系列| 欧美性jizz18性欧美| 久久久国产一区| 亚洲福利小视频| 91免费国产视频| 色综合久久88| 亚洲成人网在线| 在线观看欧美成人| 视频在线观看一区二区| 成人激情视频网| 欧美中文字幕视频在线观看| 一本一本久久a久久精品综合小说| 国产不卡在线观看| 日韩有码在线视频| 久久久爽爽爽美女图片| 亚洲风情亚aⅴ在线发布| 国产成人午夜视频网址| 国产精品久久久久久av福利软件| 精品久久香蕉国产线看观看亚洲| 91亚洲国产成人久久精品网站| 热久久视久久精品18亚洲精品| 一级做a爰片久久毛片美女图片| 91在线观看免费网站| 美女性感视频久久久| 欧洲美女免费图片一区| 大量国产精品视频| 欧美人与物videos| 久久久久久成人精品| 欧美wwwwww| 久久亚洲春色中文字幕| 日韩中文字幕欧美| 精品亚洲一区二区三区在线观看| 91av视频在线免费观看| 日韩精品中文字幕久久臀|