链表中的怎么使用指针进行链表的建立、插入、删除等处理操作

 我来答
DavidYXMahone
2011-12-13 · TA获得超过223个赞
知道小有建树答主
回答量:155
采纳率:0%
帮助的人:114万
展开全部
1、链表建立需要节点。这是存储数据的基础,以C++语言为例,要建立这样的节点(假设存储信息的类型作为一个模板)
template <class DataType>
struct Node{
DataType info; //节点存储的信息
Node<DataType> *next;
};
2、因为你是使用指针,那么,就需要动态创建结构体。使用new 运算符在堆内存中创建
Node<DataType> *head = new Node<DataType>;
堆内存和栈不同,你动态申请和释放都是在堆内存里,所以你不用担心调用一个函数,在
这个函数里动态申请了内存,返回之后没有了,在的。
3、插入节点
我们以插入头结点后边为例:
假设函数原型为:
void AddToFirst( Node<DataType> * head, DataType data );
那么函数主体中这样写:
{
Node<DataType> * ptr = new Node<DataType>; //动态生成一个新的节点
ptr->info = data; //存储传递过来的DataType类型的数据
ptr->next = head->next; //先让ptr指向的地方为head指向的地方
head->next = ptr; //再让头结点指向ptr
}
这样,添加到头结点之后的动作就完成了。
4、删除操作
删除操作需要查找是否存在要删除的数据,存在则删除,不存在不采取动作
函数原型:
void DeleteNode ( Node<DataType> *head, DataType data );
我们设置ptr作为遍历链表的游标,设置ptrNext指针作为ptr的下一个节点,将它里面的info与data对比;
设置两个指针是为了方便我们删除节点。
函数定义如下
{
Node<DataType> *ptr = head;
Node<DataType> *ptrNext = prt->next;
while( ptrNext && ptrNext->info != data ){ //当ptrNext不是NULL且包含的数据不等于data时
ptr = ptrNext;
ptrNext = ptrNext->next; //ptr和ptrNext均往下移动一次
}
if( ! ptrNext ) //如果ptrNext == NULL
cout << "链表中不存在此数据:" << data << endl;
else{ //那么跳出循环的情况就只能是ptrNext->info == data啦,此处删除ptrNext;
ptr->next = ptrNext->next; //释放ptrNext指向的堆内存之前,要把
//ptrNext之前的节点,也就是ptr,将其指向prtNext指向的地方
delete ptrNext; //释放堆内存
cout << "删除成功!" << endl;
}
}

关于链表的建立、添加节点、删除节点,还需要你自己多多琢磨。
梦打怪3763
2011-12-13 · TA获得超过5.8万个赞
知道大有可为答主
回答量:2.7万
采纳率:0%
帮助的人:3586万
展开全部
struct NODE
{ int data;
struct NODE *next;
};
typedef struct NODE SLIST;
SLIST *creat_list()
{ SLIST *h,*s,*r;
int c;
h=(SLIST *)malloc(sizeof(SLIST));//创建头节点
r=h;
scanf("%d",&c);
while(c!=-1)
{ s=(SLIST *)malloc(sizeof(SLIST));//建立新节点
s->data=c;
r->next=s;
r=s;
scanf("%d",&c);
}
r->next='\0';
return h;
}
main()
{ SLIST *head;
head=creat_list();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
候虹星0hR
2011-12-13 · TA获得超过102个赞
知道答主
回答量:200
采纳率:0%
帮助的人:34.7万
展开全部
不知道,百度查询下把
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式