// 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...