日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

poj 1250 解题(链表法)

發(fā)布時(shí)間:2024/7/5 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 poj 1250 解题(链表法) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

http://poj.org/problem?id=1250

題意大意

住宿床位有限,按順序入住,用ABC等代表單個(gè)人,第1次出現(xiàn)代表入住,第2次出現(xiàn)代表離開(kāi)

輸入:
1 ABCBCA?
代表有1個(gè)床位,
A入住,
B入住,入住失敗
C入住,入住失敗
B離開(kāi),共1人離開(kāi)(未住店)
C離開(kāi),共2人離開(kāi)(未住店)
A離開(kāi)

計(jì)算有幾個(gè)人來(lái)了沒(méi)床位離開(kāi)了

思路

用2個(gè)鏈表存儲(chǔ)床位上的人,等待隊(duì)列的人

人如果在上述2個(gè)鏈表中就刪除,不在就插入隊(duì)列

代碼

#include <iostream> using namespace std; struct node {char data;node* next;node():data('\0'),next(NULL){}node(char ch):data(ch),next(NULL){}~node(){ } }; struct list {node* p_head;size_t listLength;list():p_head(NULL),listLength(0){}~list(){ eraseAll();}void eraseAll(){if(p_head){node *delnode = p_head, *tempnode = p_head;while(tempnode->next != NULL){tempnode = delnode->next;delete delnode;delnode = tempnode;}listLength = 0;}}void push_front(char &ch){node *tempNode = new node(ch);listLength++;tempNode->next = p_head;p_head = tempNode;}node* find(char& ch){node* temp = p_head;if(p_head){while(temp != NULL && temp->data != ch){temp = temp->next;}} else{temp = NULL;}return temp;}void delNode(char &ch){node* tempnode = p_head, *delnode;delnode = find(ch);if(delnode && delnode != p_head){while(tempnode->next != delnode){tempnode = tempnode->next;}tempnode->next = delnode->next;delete delnode;listLength--;}else{if(delnode == p_head && delnode){p_head = delnode->next;delete delnode;listLength--;}}} };int main() {list beds,waitlist; //床位隊(duì)列,等待隊(duì)列node *tempnode = NULL;size_t numsofbed, walkedaway = 0;char ch;while(cin >> numsofbed && numsofbed) //輸入床位數(shù),且不為0{cin.get(); //拿掉空格while(cin.get(ch) && ch != '\n') //輸入每個(gè)人{(lán)tempnode = beds.find(ch); //去床位隊(duì)列查找人if(tempnode) //找到了這個(gè)人,床位上這個(gè)人離店{beds.delNode(ch);}else //沒(méi)有在床位上找到該人,則該人需要住店{if(beds.listLength < numsofbed) //床位有空余{beds.push_front(ch); //這個(gè)人住下}else //床位滿了{(lán)if(waitlist.find(ch)) //這個(gè)人已經(jīng)在等待隊(duì)列里{waitlist.delNode(ch); //等不了了,離開(kāi)等待隊(duì)列walkedaway++;}else //這個(gè)人不在等待隊(duì)列里,可以等待{waitlist.push_front(ch);}}}}if(walkedaway == 0){cout << "All customers tanned successfully." << endl;}else{cout << walkedaway << " customer(s) walked away." << endl;}beds.eraseAll();waitlist.eraseAll();walkedaway = 0;numsofbed = 0;}return 0; }

?

總結(jié)

以上是生活随笔為你收集整理的poj 1250 解题(链表法)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。