程式設計題:30分
共1題
注意:要求提供完整**,如果可以編譯執行酌情加分。
1. 一條1
百萬節點的單向鍊錶,鍊錶所有節點是按
value
字段從小到大的順序鏈結;下面是乙個節點的結構
typedef struct node_tnode_t;
node_t head; /*
該單向鍊錶的頭節點,全域性變數
*/ 試設計程式:針對各個
group(0-->9)
,根據value
字段排序,輸出各組
top 10
的節點。(
top10
是從小到大,取後面的大值
top10.
)要求:儘量減少計算複雜度、遍歷次數,不允許大量的輔助記憶體
慚愧,寫了挺久才寫出來的程式:
#include
#include
#include
typedef struct node_t node_t;
typedef struct queuenode queuenode;
typedef struct queue_t queue_t;
void initqueuenode(queuenode *node,int value)
void initqueue(queue_t *q)
bool isfullqueue(queue_t *q)
void destroyqueue(queue_t *q)
q->front = q->rear = null;
q->size = 0;
delete q;}
int pushqueue(queue_t *q,int value)
queuenode *node = new queuenode();
initqueuenode(node,value);
if(q->rear == null)
q->rear = node;
else
if(q->front == null)
q->front = node;
q->size++;
return 1;}
int popqueue(queue_t *q)
queuenode *node;
node = q->front;
q->front = q->front->next;
delete node;
q->size--;
return 1;}
void init(node_t *p)}
int top[10][10],total[10];
node_t *head,*p;
node_t *temp;
int num;
queue_t *q[10];
void main()
p = new node_t();
head = p;
init(p);
p = head->pnext;
while(p)
pushqueue(q[p->group],p->value);
total[p->group] = total[p->group] == 10 ? 10 : total[p->group]+1;
p = p->pnext;}
for(i=0; i<10; i++)
cout << endl;}
p = head->pnext;
while(p)
delete head;
for(i=0; i<10; i++)}
應該說這個程式是比較完善的,用佇列儲存結果,沒有記憶體洩露
又看了一下,發現自己真是會給自己找事做,用佇列去儲存。。。唉,用陣列來儲存top10,最後做一次氣泡排序,多簡單
#include
#include
#include
typedef struct node_t node_t;
void init(node_t *p)}
int top[10][10],total[10],num[10];
node_t *head,*p;
node_t *temp;
void main()
for(i=0; i<10; i++)}}
}
for(i=0 ;i<10; i++)
delete head;
}
一道百度面試題
給出乙個整型陣列num,對其中的每個元素,輸出在它左側且比它小的最近元素,要求時間複雜度為o n 例如int num 2無左側最近元素 4左側最近的是2 1沒有 3左側最近的是1.分析 建立乙個棧,然後將陣列中的元素從右至左依次壓入棧中。對每個元素,入棧前先檢查棧頂元素是否比它大,若是的話,則該元素...
一道百度面試題
下面這段 是把中英文混合字串 漢字用兩個位元組表示,特點是第乙個位元組的最高位為1 中的大寫字母轉化為小寫字母,請找出其中的bug,注意各種異常情況。for char piterator szword piterator 0 piterator else if piterator a piterat...
百度一道面試題
我這裡複製的是原話,當然順序是不一定的,很多拿到題目第一反應就是用map,當然可以解決,但是效率不高。還有人覺得應該用演算法 我是沒想到用啥演算法好.還有覺得應該先排序.還有覺得用位圖.bitmap 等等方法!我都覺得麻煩,思維方式就是,從節省時間考慮,從陣列來看,我們都得遍歷一次陣列裡面的元素,那...