標頭檔案:
#pragma once
#include#include#includetypedef int datatype;
typedef struct node
*pnode,node;
enum op
;void init_linklist(pnode *phead);//初始化
pnode buynode(datatype data);//建立新節點
void pushback(pnode *phead,datatype data);//尾插
void popback(pnode *phead);//尾刪
void pushfront(pnode *phead,datatype data);//頭插
void popfront(pnode *phead);//頭刪
pnode find(pnode phead,datatype data);//查詢值為data的節點位置
void insert(pnode pos,datatype data);//適當位置插入
void print_linklist(pnode *phead);//列印
void erase(pnode* phead, pnode pos);// 刪除鍊錶pos位置的元素
void remmove(pnode* phead, datatype data);// 刪除鍊錶中第乙個值為data的元素
void remmoveall(pnode* phead, datatype data);// 刪除鍊錶中所有值為data的元素
void destroy(pnode* phead);// 銷毀鍊錶
int empty(pnode phead);// 鍊錶是否為空
int size(pnode phead);// 求煉表中結點的個數
測試**:
#define _crt_secure_no_warnings 1
#include"linklist.h"
void menu()
int main()
break;
case popback:
popback(&pnode);
break;
case pushfront:
break;
case popfront:
popfront(&pnode);
break;
case find:
break;
case insert:
break;
case print:
print_linklist(&pnode);
break;
case erase:
break;
case remmove:
break;
case remmove_all:
break;
case empty:
break;
case size:
break;
case exit:
destroy(&pnode);
break;
default:
printf("引數選擇錯誤\n");
break;
} }system("pause");
return 0;
}
函式實現:
#define _crt_secure_no_warnings 1
#include"linklist.h"
void init_linklist(pnode *phead)
pnode buynode(datatype data)
else
return newnode;
}void pushback(pnode *phead,datatype data)
else//有多個節點
curnode->next = buynode(data); }}
void popback(pnode *phead)
else if(null == (*phead)->next)//鍊錶只有乙個節點
else//有多個節點
//free(curnode);
//curnode = null;
//prenode->next = null;
//方法2:
while(curnode->next->next)//找到倒數第二個節點
free(curnode->next);
curnode->next = null; }}
void pushfront(pnode *phead,datatype data)
void popfront(pnode *phead)
else }
pnode find(pnode phead,datatype data)
return curnode;
}void insert(pnode pos,datatype data)//在所給位置的後面插入
void print_linklist(pnode *phead)
printf("over\n");
}void erase(pnode* phead, pnode pos)// 刪除鍊錶pos位置的元素
else
}else
while((curnode != pos) && curnode)
if(curnode == null)
else
}}void remmove(pnode* phead, datatype data)// 刪除鍊錶中第乙個值為data的元素
if(curnode == null)
else
}}void remmoveall(pnode* phead, datatype data)// 刪除鍊錶中所有值為data的元素
} else if((*phead)->data == data)//有多個元素,且第乙個元素的值為data
else
break;
} curnode = curnode->next;
prenode = *phead;
while(curnode)
prenode = curnode;
curnode = curnode->next;
}}
void destroy(pnode* phead)// 銷毀鍊錶}int empty(pnode phead)// 鍊錶是否為空int size(pnode phead)// 求煉表中結點的個數return num;} 單鏈表基本操作
include include include include includeusing namespace std typedef struct node node,plinklist plinklist createfromhead node pstnode node malloc sizeof...
單鏈表基本操作
單鏈表的初始化,建立,插入,查詢,刪除。author wang yong date 2010.8.19 include include typedef int elemtype 定義結點型別 typedef struct node node,linkedlist 單鏈表的初始化 linkedlist...
單鏈表基本操作
include using namespace std define namelenth 20 define ok 0 define error 1 typedef struct flagnode node 生成結點 inline node newnode 銷毀化煉表 void destroylin...