先将键盘输入的一组整数依次存入循环链表(头插法),然后删除最末尾元素,最后将其余元素正序输出?
- C语言顺序存储链表如何实现插入一个元素删除一个元素,清写一个简单的,谢谢!!!
- 怎样编写程序,将若干整数从键盘输入,以单链表形式存储起来,然后计算单链表中结点的个数
- 若某链表中最常用的操作是在最后一个元素之后插入一个元素和删除最后一个元素
- 请问循环队列插入和删除元素的操作顺序?
C语言顺序存储链表如何实现插入一个元素删除一个元素,清写一个简单的,谢谢!!!
#include "stdafx.h"
#include <iostream>
using namespace std;
typedef struct
{
int *elem;
int length;
int size;
}SqList;
void InitList(SqList &L)
{
L.elem=new int [100];
L.length=0;
L.size=100;
}
void ListInsert(SqList &L,int pos,int e)
{
if(pos>0&&pos<=L.length)
{
int i;
for(i=L.length;i>pos-1;i--)
{
L.elem[i]=L.elem[i-1];
}
L.elem[i]=e;
L.length++;
}
else cout<<"插入的位置不合法!"<<endl;
}
void ListDelete(SqList &L,int pos,int &e)
{
if(pos<1||pos>L.length)cout<<"删除的位置不合法!"<<endl;
else
{
int i;
e=L.elem[pos-1];
for(i=pos-1;i<L.length;i++)
{
L.elem[i]=L.elem[i+1];
}
L.length--;
}
}int main()
{
SqList L;
InitList(L);int e;
int a[]={1,2,3,4,5};
CreateList(L,a,5);
ListInsert(L,5,6);
ListDelete(L,6,e);
TravelList(L);
system("pause");
return 0;
}
怎样编写程序,将若干整数从键盘输入,以单链表形式存储起来,然后计算单链表中结点的个数
用c++的话可以使用slist容器,非标准容器。
返回.size()即可获取大小。
如果不用库,则得自己首先实现单链表结构,插入的时候同时记录大小。
若某链表中最常用的操作是在最后一个元素之后插入一个元素和删除最后一个元素
问题出现在查找效率上
链表最常用的操作是在末尾插入节点和删除尾节点
在尾巴插入 删除操作:
都需要知道他的前导 而单链表要查找到最有一个元素需要遍历全部链表
双链表直接可以查到前导
最常用的操作实在最后一个元素之后插入一个元素和删除第一个元素
删除头结点 需要头指针 或者只用一个-next域就能查到 速度就快了
请问循环队列插入和删除元素的操作顺序?
插入的时候先存元素还是先动尾指针是没有关系的,你要明白的是插入节点时得先malloc一个Node*类型的节点,这时你并没有初始化这个节点,只是给它分配了sizeof(Node)大小的空间,而Node*是包含两个域的,一个是数据域,一个是指针域,它们是结构体Node*的两个成员,所以不论是先给数据域赋值还是指针域赋值都是没有关系的,都可以的。
而删除时侯,你先用一个节点保存你要删除的那个节点,然后把要删除的前驱节点的指针指向要删除的节点的后继节点,所以只要你先保存要删除的那个节点的话,先移指针还是先存数据时没有关系的。如果你没保存你要删除的那个节点,而是直接把要删除的节点的前驱节点的指针指向后继节点的话,就得先存数据,不过这是你就没把要删除节点的内存释放掉,会出现内存泄露,不知道我讲清楚了没有。
不好意思,我看成是链表了,队列的话插入元素当然得先移指针,后插入数据。
删除的时候先保存数据,后移指针。