鍊錶的概念及常用操作

2021-08-19 13:54:24 字數 1832 閱讀 8776

案例1 單向鍊錶的建立、遍歷、插入、刪除操縱

#include#include#includetypedef struct node

slist;

/*建立鍊錶*/

slist *slist_create()

phead->data = 0;

phead->next = null;

pcurrent = phead;

printf("input a num:");

scanf("%d",&num);

while (num != -1)

pm->data = num;

pm->next = null;

pcurrent->next = pm;

pcurrent = pm;

printf("input a num:");

scanf("%d", &num);

}return phead;

}//遍歷鍊錶

void slist_print(slist *head)

while (pcurrent != null)

printf("\n");

return ;

}//插入節點

int slist_insert(slist *head,int num)

ppre = head;

pcurrent = head->next;

while (pcurrent != null)

else

break;

}pm = (slist *)malloc(sizeof(slist));

pm->data = num;

pm->next = pcurrent;

ppre->next = pm;

return 0;

}//刪除節點

int slist_delete(slist *head, int num)

pcurrent = head->next;

ppre = head;

while (pcurrent != null)

else

}return 0;

}//鍊錶反轉

slist *slist_revers(slist *head)

pcurrent = head->next;

ppre = null;

while (pcurrent != null)

pm = (slist *)malloc(sizeof(slist));

if (pm == null)

pm->data = 0;

pm->next = ppre;

return pm;

}//銷毀鍊錶

int slist_destroy(slist *head)

while (head != null)

return 0;

}int main()

slist_print(head);

printf("插入節點前:");

slist_print(head);

slist_insert(head, x);

printf("插入節點後:");

slist_print(head);

slist_delete(head, y);

printf("刪除節點後:");

slist_print(head);

head = slist_revers(head);

printf("反轉後:");

slist_destroy(head);

return 0;

}

堆的基本概念及常用操作

二叉堆滿足二個特性 1 父結點的鍵值總是大於或等於 小於或等於 任何乙個子節點的鍵值 2 每個結點的左子樹和右子樹都是乙個二叉堆 都是最大堆或最小堆 當父結點的鍵值總是大於或等於任何乙個子節點的鍵值時為最大堆。當父結點的鍵值總是小於或等於任何乙個子節點的鍵值時為最小堆 堆的主要操作是插入和刪除最小 ...

靜態鍊錶相關概念及其操作

靜態鍊錶結構 首先我們先來看看靜態鍊錶的結構定義 typedef structcomponent,staticlinklist maxsize status initlist staticlinklist l l maxsize 2 cur 0 備用鍊錶的表尾 l maxsize 1 cur 0 資...

DHCP的概念及操作

概念 動態主機配置協議 dynamic host configuration protocol,dhcp 是乙個區域網的網路協議,使用udp協議工作,主要有兩個用途 給內部網路或網路服務 商自動分配ip位址,給使用者或者內部網路管理員作為對所有計算機作 管理的手段。操作 dhcp是乙個基於廣播的協議...