赞
踩
#include<iostream> using namespace std; //声明链表结点的结构体 typedef struct LinkNode { int data; struct LinkNode *next; }LinkNode, *Linklist; //初始化链表 const bool Init_List(Linklist &l) throw(bool) { //为头结点分配内存 l = (LinkNode*)malloc(sizeof(LinkNode)); //l = new LinkNode; //如果内存不足,分配失败( malloc 和 new 分配失败返回 NULL ) if (l == nullptr) { return false; //throw(false); } //头结点的指向为空 l->next = nullptr; return true; } //(按位序插入,带头结点) bool List_Insert(Linklist &l, int i, int e) { //从 1 开始,插入位置小于 1 时: if (i < 1) { return false; } //定义一个指针 now 指向当前扫描的结点,初始化指向头结点(第 0 个结点) LinkNode *now = l; //定义一个整型变量 j 表示 now 指向的是第几个结点,初始化时指向的是头结点 int j = 0; //遍历要插入的位置 while (now != nullptr && j < i - 1) { //确保 now 指针的更新 now = now->next; j++; } //now 指向 null 的时候 if (now == nullptr) { return false; } //为将要插入的结点分配内存空间 LinkNode *insert = new LinkNode; //分配失败时: if (insert == nullptr) { return false; } //分配成功时: //放入要插入的数据 insert->data = e; //先更改 后继 再更改 前驱 insert->next = now->next; now->next = insert; //插入成功 return true; } //main函数 int main() { Linklist l; Init_List(l); //try //{ // Init_List(l); //} //catch(bool) //{ // cerr << "分配失败" << endl; //} List_Insert(l, 1, 1); system("pause"); return 0; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。