单向链表的创建、显示与删除

#include<iostream>
using namespace std;
typedef struct Node *PtrToNode;
//定义指向结构体node的指针为PtrToNode
//其中*PtrToNode就是Node,所以PtrToNode就是指向Node的指针
//typedef PtrToNode Position; Position也是指向Node的指针
//struct LNode *next;和上一行的是同样的含义
struct Node {
   int data;
   PtrToNode Next;
};
typedef PtrToNode List;
//严蔚敏版单链表
//typedef struct LNode {
//   int data;
//   struct LNode *next;
//}LNode,*LinkList;
void free_list(PtrToNode head)//删除链表
{
   PtrToNode pointer;
   while (head != NULL)
   {
    pointer = head;
    head = head->Next;
    free(pointer);
   }
   cout << "成功删除链表" << endl;
}
void show_list(PtrToNode head)//显示链表
{
   PtrToNode pointer;
   pointer = head->Next;
   while (pointer)
   {
    cout << pointer->data << endl;
    pointer = pointer->Next;
   }
}
int main()
{
   int m, k;//链表长度为n,寻找第k小结点;
   PtrToNode p, head, pre;
   head = (PtrToNode)malloc(sizeof(struct Node));//可以连等//这种东西一定要放在main函数中
          //malloc分配一个结构体这么大的内存 自动返回为void类型的指针,现在强制转为PtrToNode类型的指针,其地址给p,同时p的存储类型为PtrToNode;
   cout << "请输入链表长度及寻找第几小结点" << endl;
   cin >> m >> k;
   p = head;
   for (int i = 0; i < m; i++)
   {
      pre = (PtrToNode)malloc(sizeof(struct Node));
      pre->Next = NULL;
      cin >> pre->data;
      p->Next = pre;//把结构体pre指针指向的地址赋给结构体指针p所指向的结构的next区域
      p = pre;//现在最后一个结点p为pre;因为p总是该链表当前最后一个结点,相当于一个迭代;
   }//成功创建链表
   show_list(head);
   free_list(head);
   system("pause");
}

转载于:https://www.cnblogs.com/guanguan-ecust/p/8683504.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值