5、C++基础:单向链表

作者: blueskylxb | 来源:发表于2016-11-17 19:00 被阅读16次

建立一个链表,每个结点包括:学号、性别、年龄,输入一个学号,如果链表中的结点包括该学号,则输出该结点内容后,并将其结点删去。

#include <iostream> 
using namespace std;

typedef struct Node{
  int id;
  char gender[10];
  int age;
  struct Node *next;
} node;

// 初始化头结点
void LinkListInit(node *p){
  p = new node();
  p->next = NULL;
}

// 插入节点
void LinkListInput(node *head, node *p){
  p->next = head->next;
  head->next = p;
}

// 添加节点
void LinkListAdd(node *head){
  char ch;
  while(1){
    node *p = new node;
    cout << "输入\n学号\t" << "性别\t" << "年龄" << endl;
    cin >> p->id >> p->gender >> p->age ;
    cout << "save(y or n):" << endl;

    cin >> ch;
    if(ch == 'y'){
            LinkListInput(head, p);
    }else {
      delete p;
    }

    cout << "Continue(y or n)" << endl;

    cin >> ch;
    if(ch == 'n') break;
  }
}

// 删除节点
void LinkListDelete(node *head, int id){
  node *p = head;
  node *q = p;

  while(p->next){
    q = p;
    p = p->next;

    if(p->id == id){
      q->next = p->next;
      cout << p->id << '\t' << p->gender << '\t' << p->age << endl;
      delete p;
      p = q;
    }
  }
}

// 显示所有的节点信息
void LinkListDisplay(node *head){
  node *p = head->next;
  cout << "\n学号\t" << "性别\t" << "年龄" <<endl;

  while(p){
    cout << p->id << '\t' << p->gender << '\t' << p->age <<endl;
    p = p->next;
  }
}

int main(void){
  node *head = new node;

  LinkListInit(head);
  LinkListAdd(head);

  LinkListDisplay(head);

  int id;
  cout << "要删除的学号:" <<endl;
    cin >> id;

    LinkListDelete(head, id);
    LinkListDisplay(head);

    return 0;
}

相关文章

  • 5、C++基础:单向链表

    建立一个链表,每个结点包括:学号、性别、年龄,输入一个学号,如果链表中的结点包括该学号,则输出该结点内容后,并将其...

  • 数据结构与算法——线性表3

    线性表——单向循环链表 3、单向循环链表 在单向链表的基础上,单向链表的尾结点的Next指向链表的头部,就是为循环...

  • 用Java写单向链表

    数据结构—单向链表 为了巩固自己的基础知识,这次就用 Java 来写一个单向链表。问:什么是单向链表?首先链表是数...

  • 8.单向链表SingleLinkList

    目录:1.单向链表的定义2.单向链表的图解3.单向链表定义操作4.单向链表的实现 1.单向链表的定义 2.单向链表...

  • 线性表-单向循环链表

    为了方便,本文介绍的单向循环链表不包含头节点 单向循环链表内容 单向循环链表的的定义 单向循环链表的创建 单向循环...

  • 10.单向循环链表SingleCycleLinkList

    目录:1.单向循环链表的定义2.单向循环链表的图解3.单向循环链表定义操作4.单向循环链表的实现 1.单向循环链表...

  • 数据结构与算法-单向循环链表

    单向循环链表 在单向链表的基础上令表尾节点的指针指向链表的第一个节点(首元结点),构成循环链表。其特点是可以从表中...

  • 六、单向循环链表&双向循环链表

    单向循环链表 只需要在之前的 基础之上进行修改,这里只需要修改 和 就可以了。 单向循环链表 – add(int ...

  • 04单向循环链表实现总结

    一、说说什么是单向循环链表? 人狠话不多. 上图. 单向循环链表就是这个样子!单向循环链表.png 与单向链表区别...

  • 数据结构基础--单向循环链表

    单向循环链表 单向循环链表是可循环的单链表,它与单链表的区别在于单向链表的最后一个元素的指针域为空,而单向循环链表...

网友评论

    本文标题:5、C++基础:单向链表

    本文链接:https://www.haomeiwen.com/subject/rrtjpttx.html