单链表上的操作
CreatList函数:
Node* CreatList_L() {
Node*head = (Node*)malloc(sizeof(Node)); head->next = NULL;//创建头结点
Node* p = head;
int a; cin >> a;
while(a!=-1) {
Node *q= (Node*)malloc(sizeof(Node));//给q分配空间
p->next = q; //前一个结点连向后一个
q->data = a; q->next = NULL;//填入数据域,指针域赋空
p = q;//更新p位置
cin >> a;
}
return head;
}
主函数:
int main()
{
Node* head = CreatList_L();
return 0;
}
GetElem_L函数:
void GetElem_L(Node* head, int i, int& e) {
//取第i个位置元素的值
Node* p = head->next; int j = 1;//j为计数器
while (p && j < i) {
//p指向第i个元素
p = p->next; j++;
}
e = p->data;
}
ListInsert_L函数:
void ListInsert_L(Node* head, int i, int e) {
//在第i个位置前插入e
Node* p = head; int j = 0;
while (p && j < i - 1) {
//寻找第i-1个结点
p = p->next; j++;
}
Node*s = (Node*)malloc(sizeof(Node));
s->data = e;
s->next = p->next