跪求c语言的高手,链式队列设计问
运行结果:totalelement >1-->2-->3-->4-->5-->6-->7-->8-->9totalelement >6-->7-->8-->9totalelement >6-->7-->8-->9-->0-->10-->20-->30-->40the4thelementis8。 源代码:#include#includetypedefstructlist_node_t{structlist_node_t*next;/*pointertothenextelementinthecircularsinglelist*/intdata;/*thedatafieldonthisele...全部
运行结果:totalelement >1-->2-->3-->4-->5-->6-->7-->8-->9totalelement >6-->7-->8-->9totalelement >6-->7-->8-->9-->0-->10-->20-->30-->40the4thelementis8。
源代码:#include#includetypedefstructlist_node_t{structlist_node_t*next;/*pointertothenextelementinthecircularsinglelist*/intdata;/*thedatafieldonthiselement*/}list_node_t;typedefstructlist_t{list_node_t*tail;/*thetailofthelist*/unsignedintlen;/*thenumberofelementinthislist*/}list_t;#defineRET_OK0#defineRET_FAIL-1/*initilizealist*/intlist_init(list_t*list){if(list==NULL){returnRET_FAIL;}list->tail=NULL;list->len=0;returnRET_OK;}intlist_empty(list_t*list){return(list->len==0);}intlist_enqueue(list_t*list,intdata){list_node_t*p=NULL;/*mallocanode。
*/p=(list_node_t*)malloc(sizeof(list_node_t));if(p==NULL){returnRET_FAIL;}/*initilizethenodestructure。
*/p->data=data;p->next=p;/*insertittothetailofthequeue*/if(list->tail!=NULL){p->next=list->tail->next;list->tail->next=p;}list->tail=p;/*updatethelengthofthequeue*/list->len++;returnRET_OK;}intlist_dequeue(list_t*list,int*data){list_node_t*p=NULL;if(list_empty(list)){returnRET_FAIL;}p=list->tail->next;/*checkwhetherthisisthelastelement。
*/if(p!=list->tail){list->tail->next=p->next;}else{list->tail=NULL;}/*decreacethelength;*/list->len--;/*returnthedata。
*/*data=p->data;/*freetheelement*/free(p);returnRET_OK;}intlist_get_element(list_t*list,intpos,int*data){list_node_t*p=NULL;if(pos>list->len){returnRET_FAIL;}p=list->tail->next;while(--pos){p=p->next;}*data=p->data;returnRET_OK;}intlist_debug_pint(list_t*list){inti=0;list_node_t*p=NULL;if(list_empty(list)){printf("thisisaemptylistqueue。
\n");returnRET_OK;}printf("totalelementinthelist:%d\n",list->len);p=list->tail->next;for(i=0;ilen-1;i++){printf("%d-->",p->data);p=p->next;}printf("%d\n",p->data);returnRET_OK;}intmain(intargc,char**argv){inti,element;list_tlist;list_init(&list);for(i=0;i<10;i++){list_enqueue(&list,i);}list_debug_pint(&list);for(i=0;i<5;i++){list_dequeue(&list,&element);}list_debug_pint(&list);for(i=0;i<5;i++){list_enqueue(&list,i*10);}list_debug_pint(&list);list_get_element(&list,4,&element);printf("the%dthelementis%d。
\n",4,element);getchar();return0;}。收起