單鏈表的基本操作(建立,輸出及排序)

2021-07-16 08:04:06 字數 1710 閱讀 2784

今天總結了一下單鏈表的基本操作:建立,求長度,輸出結點,排序(冒泡及歸併)

#include 

#include

using namespace std;

struct listnode

;//尾插法,新建乙個鍊錶

listnode *creatlist( )

else

cycle=0;

}//head=head->next;//head指向第乙個節點

p->next=null;//尾指標

//printf("\n %d",head->data);//輸出頭結點

printf("\n");

return head;

}//求鍊錶長度

int lenlist(listnode *head)

return n;

}//輸出單鏈表結點

void printlist(listnode *head)

}int main()

#include

#include

using namespace std;

//以下宣告適用於歸併排序鍊錶

#define maxsize 1024

#define length 8

struct sqlist

;//冒泡法排序鍊錶,(公升序)

listnode* bubblesortlist(listnode *head)}}

return head;

}//歸併法排序鍊錶

void merge(sqlist sr,sqlist &tr,int i,int

m,int n)

while(i<=m)

tr.r[k++]=sr.r[i++];

while(j<=n)

tr.r[k++]=sr.r[j++];

}void msort(sqlist sr,sqlist &tr,int

s,int t)

}void mergesort(sqlist &l)

int main()

,length};

mergesort(l);

for(i=1;i<=l.length;i++)

cout<" ";

cout0;}

//刪除單鏈表的某個結點,並返回頭結點

//注意:當鍊表有頭結點時,刪除任乙個結點,操作相同。

//不同的是無頭結點的單鏈表。故該鍊錶無頭結點。

listnode *deletelistnode(listnode *head,int num)

if(num==p->

data)

else

}else

printf("\n%d could not been found.",num);

return head;

}//單鏈表的插入

//有序的單鏈表,把值num插入

listnode *insertlistnode(listnode *head,int num)

if(p0->

data

<=p->

data)

else

//插入鍊錶中間 q--p0--p1

}else

//插入位置位於鍊錶尾部

return head;

}

單鏈表的建立及基本操作

鍊錶作為資料結構中最容易理解的結構,我們需要對它的基本操作非常熟悉 結點結構 typedef struct node node,snode 基本操作 初始化 初始化 snode init 建立鍊錶 頭插法建立單鏈表 snode create1 int n return head 尾插法建立單鏈表 s...

單鏈表的建立及操作

1 單鏈表的結構體演算法 typedef char elemtype typedef struct node lnode,linklist lnode為結點型別,linklist為指向結點的指標型別 2 建立單鏈表 1 頭插法 從表尾到表頭逆向建立 演算法思路 1 首先建立乙個頭結點h,並使頭結點的...

單鏈表的基本操作 單鏈表的建立 插入 刪除結點等

1 單鏈表的建立 2 建立結點 3 列印結點 4 鍊錶的插入 頭插法 5 鍊錶的刪除 指定位置刪除 include include include 結構體 結點由資料域 指標域構成 struct node 建立鍊錶 表頭 struct node createlist 建立結點 struct node...