编写不带头结点单链表的建立、插入和删除操作算法。
一、问题描述
编写一个不带头节点的单链表
二、基本要求
1) 建立
2) 插入
3) 删除
三、算法思想
选用不带头结点的单链表,在第一个元素节点前插入节点时头指针的值将改变为指针s的值,在非第一个元素结点的其他结点前插入结点时,改变的是指针->next的值。
删除不带头结点的单链表的第一个元素结点时头指针的值将改变为头指针->next;删除其他节点是,头指针的值不会改变,改变的是指针->next的值。
四、数据结构
typedef struct LNode{
ElemType data;
struct LNode* next;
}LNode,*LinkList;
五、模块划分
(1) typedef struct LNode定义结构体并重命名
(2) LNode* GetElem(LinkList &L,int i)建立单链表并初始化
(3) bool InsertNextNode(LNode* p,ElemType e)
(4) bool ListInsert(LinkList &L,int i,ElemType e) 在单链表的第i个元素插入元素e
(5) bool ListDelete(LinkList &L,int i,ElemType &e) 在单链表的第i个元素删除元素e
(6) bool Empty(LinkList L)判断单链表是否为空
(7) int main()主函数,实现多个函数的调用并实现功能
六、源程序
#include<stdio.h>
#include<stdlib.h>