這個是比較完全的單鏈表生成的程式.
在vc可以編譯成功.
#include
#include
#include
#include
#define len sizeof(lnode) //定義len為乙個節點的長度
enum bool; //定義bool型
typedef struct node
lnode,*linklist;
void creatlist(linklist &,int); //生成乙個單鏈表
bool listinsert(linklist &,int,char); //在單鏈表中插入乙個元素
bool listdelete(linklist &,int,char &); //在單鏈表中刪除乙個元素
bool listfind_keyword(linklist,char,int &); //按關鍵字查詢乙個元素
bool listfind_order(linklist,char &,int); //按序號查詢乙個元素
void listprint(linklist); //顯示單鏈表所有元素
void main()
p->next=null;
}///
/*void creatlist(linklist &v,int n) //頭插法
//查詢第i-1個元素的位置
if(!p||j>i) return false; //沒有找到
s=(linklist)malloc(len); //生成乙個新結點
s->data=e;
s->next=p->next; //將新結點插入到單鏈表中
p->next=s;
return true;
bool listdelete(linklist &v,int i,char &e)
if(!(p->next)||j>i) return false; //查詢失敗
q=p->next;p->next=q->next; //刪除該元素
e=q->data; //e取得該元素值
free(q); //釋放該元素空間
return true;
bool listfind_keyword(linklist v,char e,int &i)
//找到或到鍊錶尾為止
if(p->data!=e) //該元素在鍊錶中不存在
return false;
else return true;
bool listfind_order(linklist v,char &e,int i)
if(j!=i) return false; //查詢失敗
else
printf("/n");
反轉乙個單鏈表
思路二 反轉乙個鍊錶 示例 結構體定義 先對原鍊錶做頭刪操作,再對新鍊錶做頭插定義乙個新head頭指標,標記為newhead,將它初始為null,並非指向null,最後我們選擇返回這個newhead指標作為新鍊錶的頭指標。定義乙個結點node作為 臨時中轉站 初始化與否並無大影響。進行迴圈遍歷鍊錶各...
定義乙個單鏈表
鍊錶是一種物理儲存結構上非連續 非順序的儲存結構,資料元素的邏輯順序是通過鍊錶中的指標鏈結次序實現的 鍊錶是由乙個乙個的節點相連線的,每乙個節點都是乙個物件,都有兩個屬性 data,next 根據鍊錶的結構可以分為 1.帶頭 不帶頭 2.單向 雙向 3.迴圈 非迴圈 這些組合起來就有8種結構 編寫乙...
反轉乙個單鏈表
反轉乙個單鏈表。示例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null高階 你可以迭代或遞迴地反轉鍊錶。你能否用兩種方法解決這道題?解題心路 迭代好說,遞迴 第一思路將後面的全部翻轉好,再將最後乙個元素的next指向當前。返回最後乙個元素的指標,那就有 當前節點指標 head ...