案例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是乙個基於廣播的協議...