#define _crt_secure_no_warnings 1
#include "slistnode.h"
void test1()//pushback popback
void test2()//pushfront popfront find
else }
void test3()//erase
void test4()//bubblingsort erasenothead reverselish insertfrontnode
int main()
#ifndef __slistnode_h__
#define __slistnode_h__
#pragma once //能夠保證標頭檔案只被編譯一次
#include #include #include typedef int datatype;
typedef struct slistnode
slistnode,*pslistnode;
// 初始化單鏈表(對於無頭結點單鏈表,該函式沒有意義)
void initlist(pslistnode* phead);
// 銷毀單鏈表
void destroylist(pslistnode* phead);
// 尾插
void pushback(pslistnode* phead, datatype data);
// 尾出
void popback(pslistnode* phead);
// 頭插
void pushfront(pslistnode* phead, datatype data);
// 頭出
void popfront(pslistnode* phead);
// 在鍊錶中查詢元素data
pslistnode find(pslistnode* phead, datatype data);
// 刪除pos位置的結點(注意不能用那種替換形式)
void erase(pslistnode* phead, pslistnode pos);
// 在鍊錶的pos位置插入元素data
void insert(pslistnode* phead, pslistnode pos, datatype data);
//列印鍊錶存放的資料
void printlist(pslistnode* phead);
//寫乙個單鏈表的氣泡排序
void bubblingsort(pslistnode* phead);
//刪除乙個無頭鍊錶的非尾結點
void erasenothead(pslistnode pos);
//反轉(逆置)鍊錶
void reverselish(pslistnode* phead);
//(無頭單鏈表)在當前節點前插入乙個節點
void insertfrontnode(pslistnode pos,datatype data);
//只遍歷一遍,查詢鍊錶的中間結點
pslistnode findmidnode(pslistnode* phead);
//刪除倒數第k個結點(k>1 && k《總長度)
void delknode(pslistnode* phead,int k);
#endif//__slistnode_h__
#define _crt_secure_no_warnings 1
#include "slistnode.h"
//這裡參的是二級指標,因為要對結構體指標的內容進行修改,所以必須傳該指標的位址(即
//乙個二級指標),一級指標相當於值傳遞,不會對實參有改變
void initlist(pslistnode* phead)
pslistnode byenode(datatype data)
else
return pnewnode;
}void printlist(pslistnode* phead)
else
printf("\n"); }}
void pushback(pslistnode* phead, datatype data)
else
pnewnode = byenode(data);
pnode->_nextnode = pnewnode;
pnewnode->_nextnode = null; }}
void popback(pslistnode* phead)
else if (pnode1->_nextnode == null) //當只剩下乙個節點的情況下,要單獨處理頭指標
else
pnode2->_nextnode = null;//保證鍊錶最後乙個節點的的_nextnode為空
free(pnode1);//和malloc配套使用 釋放最後乙個節點
pnode1 = null;//將釋放掉的結點賦值為空,以防變成空指標 }}
void pushfront(pslistnode* phead, datatype data)
else }
void popfront(pslistnode* phead)
else if ((*phead)->_nextnode == null)
else }
pslistnode find(pslistnode* phead, datatype data)
else
}return null;
}void erase(pslistnode* phead, pslistnode pos)
else if(pnode == pos)
else
}}void insert(pslistnode* phead, pslistnode pos, datatype data)
else if(pnode == pos)
else
}}void destroylist(pslistnode* phead)
*phead = null;
}void bubblingsort(pslistnode* phead)
cur = cur->_nextnode;
} prev = cur;
cur = *phead; }}
void erasenothead(pslistnode pos)
pos->data = pos->_nextnode->data;
del = pos->_nextnode;
pos->_nextnode = pos->_nextnode->_nextnode;
free(del);
del = null;
}void reverselish(pslistnode* phead)
(*phead)->_nextnode = newphead;
}void insertfrontnode(pslistnode pos,datatype data)
pnewnode = byenode(data);
tmp = pnewnode->data;
pnewnode->data = pos->data;
pos->data = tmp;
pnewnode->_nextnode = pos->_nextnode;
pos->_nextnode = pnewnode;
}pslistnode findmidnode(pslistnode* phead)
return cur;
}void delknode(pslistnode* phead,int k)
while (cur->_nextnode != null)
del = prev->_nextnode;
prev->_nextnode = prev->_nextnode->_nextnode;
free(del);
del = null;
}
簡單面試題
1.short s1 1 s1 s1 1 有錯嗎?short s1 1 s1 1 有錯嗎?答 對於short s1 1 s1 s1 1 由於1是int型別,因此s1 1運算結果也是int 型,需要強制轉換型別才能賦值給short型。而short s1 1 s1 1 可以正確編譯,因為s1 1 相當於...
java簡單面試題
1 和 的區別是什麼?是預編譯處理,是字串替換。mybatis在處理 時,會將sql中的 替換為?號,呼叫preparedstatement的set方法來賦值 mybatis在處理 時,就是把 替換成變數的值。使用 可以有效的防止sql注入,提高系統安全性。2 當實體類中的屬性名和表中的欄位名不一樣...
python簡單面試題(2)
首先搭建環境,然後根據專案搭建自動化框架,編寫自動化用例,整理用例,自動生成測試報告,然後整合到jenkins上進行操作 出現anr和crash進行復現抓取日誌 adb命令 編寫自動化用例的時候斷言編寫清楚,然後也可以通過用例失敗後進行截圖進行儲存,方便我們後續檢視用例失敗原因,自動化用例失敗後,進...