Skip to content

linkedlist

struct listNode{
  int val;//节点值
  listNode *next;//指向下一节点的指针
  listNode(int x): val(x),next(nullptr){}//构造函数
}
/*初始化链表*/
//初始化各个结点
listNode* n0=new listNode(1);
listNode* n1=new listNode(3);
listNode* n2=new listNode(4);
listNode* n3=new listNode(5);
listNode* n4=new listNode(6);
//构建节点之间的引用
n0->next=n1;
n1->next=n2;
n2->next=n3;
n3->next=n4;



/*插入在结点n0后插入结点p*/
void insert(listNode *n0,listNode* P)
{
  listnode *n1=n0->next;
  P->next=n1;
  n0->next=P;//修改两个结点
}

/*删除链表的结点n0后的首个结点*/

void remove(listNode *n0){
//改变一个结点的指针
if(n0->next == nullptr)
  return;
//n0->P->n1
listNode*P=n0->next;
listNode*n1=P->next;
n0->next=n1;
//释放内存
delete P;

}

/*访问索引为index的结点*/

listNode *access(listNode *head,int index){
  for(int i=0;i<index;i++){
    if(head==nullptr)
      return nullptr;
    head=head->next;
  }
  return head
}


/*查找*/

int find(listNode* head,int target)
{
  int index=0;
  while(head!=nullptr){
    if(head->val==target)
      return index;
    head=head->next;
    index++;
  }
  return -1;
}

stack

/*初始化栈*/
stack<int>stack;
/*元素入栈*/
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
/*访问栈顶元素*/
int top=stack.top();
/*元素出栈*/
stack.pop();//无返回值

int size=stack.size();
bool empty=stack.empty();

/*基于链表实现的栈*/

class LinkedListStack{
private:
  listNode *stacktop;//将头节点作为栈顶
  int stkSize;

public:
  LinkedListStack(){
    stacktop=nullptr;
    stkSize=0;
  }

~LinkedListStack(){
  //遍历链表删除结点,释放内存
  while(stackTop){
    listNode*temp=stackTop;
    stackTop=stackTop->next;
    delete temp;

  }
}



}