單鏈表的操作

2021-09-30 06:38:31 字數 1748 閱讀 8963

// datastructure.cpp :

定義控制台應用程式的入口點。//

#include "stdafx.h"

#include

// 鍊錶節點定義

typedef struct node

node;

node *createlist()

else

q = p;  // q

指向末節點}

q->next = null; // 鍊錶的最有乙個指標為

null

return head;}

// 測量單鏈表的長度

int listlength(node *head)

return len;}

//列印單鏈表

void printlist(node *head)

else}

// 單鏈表節點查詢

node *searchnode(node *head,int pos)

if(pos == 0) //head位置

if(p == null) //鍊錶為空

while(p->next != null && index < pos)

if(index == pos)

else

//單鏈表節點插入

void insertlist(node *head,int pos,int data)

p = searchnode(head,--pos);

if(p != null)

//單鏈表節點刪除

void deletelist(node *head,int pos)

p = searchnode(head,--pos); //獲取位置

pos的節點指標

if(p != null && p->next != null)

//單鏈表的逆置

void reverselist(node *head)

p = head->next;

q = p->next;     // 儲存原第二個節點

p->next = null;  //

原第乙個節點為末節點

while(q != null)

head->next = p; //新的第乙個節點為末節點

//尋找單鏈表的中間元素

node *searchmiddlenode(node *head)

i++;

current = current->next;

} return middle;

//單鏈表正向排序

void sortlist(node *head)

for(p = head->next;p->next != null;p = p->next)

}} }

//單鏈表是否有回環

bool isloop(node *head)

dowhile(p2 != null && p2->next !=null && p1 != p2);

if(p1 == p2)

else

//有序單鏈表的合併

node *mergelist(node *list1,node *list2)

else if(list2 == null)

if(list1->data < list2->data)  // 遞迴呼叫方法

else

return head;}

int _tmain(int argc, _tchar* ar**)

單鏈表的操作

單鏈表是一種非常重要的資料結構,下面用c語言對單鏈表的操作做乙個簡單的總結 typedef struct nodenode,linklist 1 單鏈表的建立 建立乙個單鏈表,鍊錶裡面存放有十個偶數 2到20 有頭節點,頭節點不存放元素。linklist createlinklist return ...

單鏈表的操作

1.定義單鏈表的介面函式 ifndef linklist h define linklist h typedef int elemtype typedef struct node node node initnode bool addnode node head,elemtype data 頭插法 ...

單鏈表的操作

pragma once extern c list node,list link 頭插建立鍊錶 list link create list head int n 尾插法建立鍊錶 list link creat list tail int n 獲取長度 int get list length list...