#include?<stdlib.h>
#include?<string.h>
typedef?struct?node{
char?no[20];//存放編號
char?name[40];//存放名稱
int?reserve;//庫存
struct?node?*next;
}NODE;
typedef?struct?link{
NODE?*front;//頭指針
NODE?*rear;//尾指針
}LINK;
NODE?*create_node(void){
NODE?*node?=?(NODE?*)malloc(sizeof(NODE));
printf("請輸入貨物編號:");
gets(node->no);
printf("請輸入貨物名稱:");
gets(node->name);
printf("請輸入貨物名稱:");
char?ch;
while(?(ch=?getchar())?!=?'\n');//rewind(stdin);
scanf("%d",&node->reserve);
node->next?=?NULL;
return?node;
}
void?init_link(LINK?*link){
link->rear?=?NULL;
link->front?=?NULL;
}
int?link_empty(LINK?*link){
return?link->front?==?NULL1:?0;
}
int?node_num(LINK?*link){
int?num?=?0;
if(?link_empty(link)){
return?num;
}
num?=?1;
NODE?*node?=?link->front;
while(node?!=?link->rear){
node?=?node->next;
++num;
}
return?num;
}
/*NODE?*node_find(LINK?*link,const?int?n){
int?num?=?node_num(link);
if(num?<?n){
printf("公有節點%d個,無法找到第%d個節點\n",num,n);
}
else{
}
}
*/
void?node_push(LINK?*link){
NODE?*node?=?create_node();
if(link->front?==?NULL){
link->front?=?node;
link->rear?=?node;
node->next?=?NULL;
}
else{
link->rear->next?=?node;
link->rear?=?node;
node->next?=?NULL;
}
}
void?node_insert(LINK?*link,const?int?n){
int?num?=?0,i?=?1;
NODE?*node?=?link->front;
NODE?*new_node?=?NULL;
if?(?link_empty(link)?){
printf("鏈表為空,將建立鏈表!\n");
node_push(link);
}
else{
if(?n?<=?1){
printf("在鏈表頭插入數據\n");
new_node?=?create_node();
new_node->next?=?link->front;
link->front?=?new_node;
}
else?if(?n>=?num?=?node_num(link)?){
printf("節點數少於%d,將在末尾插入節點.\n",n);
node_push(link);
}
else{
printf("在第n個節點後插入數據\n");
if(num?>=?n){
while(?i?!=?n){
node?=?node->next;
++i;
}
new_node?=?create_node();
new_node-next?=?node->next;
node->next?=?new_node;
}
}
}
void?find_node_insert(LIKNK?*link,const?char?*name){
NODE?*node?=?link->front;
if(?link_empty(link)?)
node_push(link);
else?{
while(strcmp(node->name,name)?!=?0){
if(node?!=?link->rear)node?=?node->next;
else?break;
}
if(node?!=?NULL){
NODE?*new_node?=?create_node();
new_node-next?=?node->next;
node->next?=?new_node;
}
else?{
printf("沒有找到相關貨物,將在頭節點插入數據\n");
intsert(link,0);
}
}