單鏈表的結構及其操作

2021-08-02 08:50:59 字數 2463 閱讀 1420

單鏈表的結構及其操作

/**

* 內容:單鏈表及其操作

*/ #include #include typedef int elemtype;

typedef struct lnode

lnode,linklist;

/*單鏈表的基本操作*/

lnode* initlist();//初始化單鏈表

lnode* getnode(linklist *l,int pos); //返回pos位置上的節點

int isempty(linklist *l); //判空

void printlist(linklist *l); //列印

int getlength(linklist *l); //得到單鏈表當前長度

void createlisth(lnode *head,int n); //用頭插法建表

void createlistr(lnode *head,int n); //用尾插法建表

void inslist(linklist *l,int pos,elemtype e); //在pos後插入e

elemtype dellist(linklist *l,int pos); //刪除某個位置的元素並返回該元素

void print(int n);

/*單鏈表的非基本操作*/

void reverse(linklist *l,int start,int end); //逆置start到end的單鏈表

void mergeup(linklist *l1,linklist *l2,linklist *l3);//將兩個單鏈表(排好序)歸併成乙個

void mergedown(linklist *l1,linklist *l2,linklist *l3);//將兩個單鏈表(排好序)歸併成乙個降序

int main()

/*非基本操作*/

/*將兩個單鏈表(排好序)歸併成乙個(降序)*/

void mergedown(linklist *l1,linklist *l2,linklist *l3)

else

}while(p!=null)

while(q!=null) }

/*將兩個單鏈表(排好序)歸併成乙個 (公升序)*/

void mergeup(linklist *l1,linklist *l2,linklist *l3)

else

}if(p!=null)

if(q!=null) }

/*逆置start到end之間的單鏈表*/

void reverse(linklist *l,int start,int end) }

/*基本操作*/

/*得到pos位置上的節點*/

lnode* getnode(linklist *l,int pos)

while(inext;

i++;

} return p;

}/*刪除指定位置的節點*/

elemtype dellist(linklist *l,int pos)

if(pos>=getlength(l)||pos<0)

p=l->next;

while(inext;

i++;

} q=p->next;

p->next=q->next;

free(q);

} /*向指定位置的後面插入節點*/

void inslist(linklist *l,int pos,elemtype e)

int i=0;

lnode *p,*s;

p=l->next;

s=(lnode *)malloc(sizeof(lnode));

s->data=e;

while(inext;

i++;

} s->next=p->next;

p->next=s;

}/*得到當前單鏈表的長度*/

int getlength(linklist *l)

return len;

} /*判空*/

int isempty(linklist *l)

return 0;

}/*初始化鍊錶,建立頭節點*/

lnode* initlist()

/*用頭插法建立長度為n的單鏈表(資料跟輸入的順序相反)*/

void createlisth(lnode *head,int n)

} /*用尾插法建立長度為n的單鏈表*/

void createlistr(lnode *head,int n)

s->next=null;

} /*列印單鏈表*/

void printlist(linklist *l)

while(p!=null)

printf("\n");

} void print(int n)

單鏈表及其基本操作

資料結構在 優化以及設計過程的地位不可忽視,資料結構裡包含很多內容,後續會一 一附上。此騙部落格主要談單鏈表,主要從其定義及建立,再完成乙個簡單的歸併練習進行描述 在鍊錶儲存中,每個節點不僅包含所存元素的資訊,還包含元素之間邏輯關係的資訊。這麼說有點抽象,我們可以這麼理解 單鏈表中前驅結點包含後繼結...

實驗三 單鏈表及其操作

1.通過c語言結構體定義鍊錶結點 2.定義並實現建立空鍊錶操作 3.定義並實現向鍊錶指定位置插入結點操作 4.定義並實現從鍊錶指定位置刪除結點操作 1.在vc 中建立名為linklist的空專案,並將commons.h檔案新增到頭檔案目錄中 2.在工程的頭檔案目錄中建立link list.h檔案,在...

迴圈單鏈表及其相關操作實現

迴圈鍊錶的結束條件為p list.phead include 鍊錶結點 typedef struct listnode listnode 煉表頭 typedef struct list list 初始化 void init list list 銷毀鍊錶 void destroy list list ...