單向鍊錶的操作彙總

2021-08-07 14:45:14 字數 1914 閱讀 3507

#include

#include

#include

#include

typedef struct _node

node;

/*建立乙個鍊錶*/ 

node *creatnode_head(int n)

return r;

}node *creatnode(int n)

q->next=null;

return r;

}/*測量鍊錶的長度*/ 

int length(node *p)

return len;

}/*清空乙個鍊錶*/ 

void clear_list(node *list)

p = list->next;//第乙個結點  

while(p)  

list->next = null;  

printf("此鍊錶已經為空:\n");

} /*判斷乙個鍊錶是否為空*/ 

bool isempty(node *list)

else

}  /*列印鍊錶*/ 

void printnode(node *p)

else

}printf("\n"); 

}/*定位到某個位置,返回值是該節點儲存的資料*/ 

int search_node(node *head,int pos)

else if(pos==0)

else if(head->next==null)

else}}

return head->data; 

}/*定位到某個位置,返回值是該節點儲存的位址*/ 

node *search_node1(node *head,int pos)

else if(pos==0)

else if(head->next==null)

else}}

return head; 

}/*刪除某個節點*/ 

node *delete_node(node *head,int pos)

else

return p;

}/*在某個位置插入乙個新節點*/ 

node *insert_node(node *head,int pos,int data)

node *item=(node*)malloc(sizeof(node));

item->data=data;

item->next=head->next;

head->next=item;

return p;

}/*交換函式*/ 

void swap(int *x,int *y)

/*氣泡排序*/ 

node *bubblesortlist(node *list) 

}p = q;

}list->next=head;

return r;

}/*兩個有序鍊錶的合併*/ 

node *sortedmerge(node * a, node * b)    

else    

return (result);    

}  /*鍊錶的逆置*/ 

單向鍊錶操作

今天花了一天時間把單向鍊錶的建立,增加,刪除,修改,查詢,遍歷等問題用c 實現了一遍,把以前好多模糊的地方,終於弄清楚了。現在把這些內容記錄下來。1.建立單向鍊錶結點 我們通常用乙個結構體表示鍊錶結點,如下 struct listnode 2.插入新結點 bool insertlistnode li...

單向鍊錶的操作

1.單向鍊錶的建立 鍊錶建立後,其實,此時我們只可以知道head,而後通過head訪問每乙個節點成員。這是比較簡單的鍊錶,其中沒有其它的資訊了。如果需要建立有環的鍊錶,則將尾節點的next指標指向中間乙個節點即可。首先找到尾節點,而後將尾部節點的next指向中間乙個節點即可。如何判斷乙個鍊錶是否存在...

單向鍊錶的操作

include using namespace std typedef char elemtype 定義char型別的elemtype,方便修改 typedef struct lnode 定義乙個結構體 linklist void initlist linklist l void createlis...