已知head指向一个单向已排序的链表,链表的每个结点包含数据域(data)和指针域(next)。

编程实现1:定义结点结构2:编程实现链表插入D结点3:删除值为B的结点。
急待高手回答。

#include <stdio.h>
#include <stdlib.h>

typedef struct node {
int data;
struct node *next;
}*LinkList, *Node;

// 在头结点为head的有序链表中插入结点D
void InsertNode(LinkList head, Node D) {
Node p;
for(p = head; p->next; p = p->next) {
if(p->next->data > D->data) { // 如果原链表是降序时,应将">"改为"<"
D->next = p->next;
p->next = D;
return;
}
}
p->next = D;
D->next = NULL;
}

// 删除头结点为head的链表中第一个结点数据为B的结点,成功返回1,否则返回0
int EraseNode(LinkList head, int B) {
Node p,q;
for(p = head; p->next; p = p->next) {
if(p->next->data == B) {
q = p->next;
p->next = q->next;
free(q);
return 1;
}
}
return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-05-23
用C++做的 你看下,D是按值
class Linkedlist
{
private:
struct node
{
int data;
node *next;
node():next(NULL){}
node(const int& v,node *n=NULL):data(v),next(n){}
}
node *head;
int length; //链表长度
protected:
node *get(int i)
{
if(i<0)
return head;
node *p=head->next;
for(int j=0;j<i;j++)
p=p->next;
return p;
}
}

int insert(int i,const int &D)
{
node *p=get(i-1);
p->next=new node(x,p->next);
++length;
}

void remove(const int &B)
{
int j=search(B);
node *p=get(j-1);
node *q=p->next;
p->next=q->next;
delete q;
--size;
}

node search(int &x)const
{
node *p=head->next;
for(int i=0;p;i++)
{
if(p->data==x)
return i;
p=p->next;
}
return -1; //没有找到

}

...已知head指向一个带头结点的单向链表,链表中每个结点包含数据域(dat...
= NULL){ptr = ptr->next;if (ptr->data > max){max = ptr->data;}}return max;}Node* getMax_Address(List head){if (head->next == NULL){printf("链表中没有节点.\\n");exit(-1);}Node *ptr = head->next;Node *max_address = ptr;while (ptr->next != NULL){ptr = ...

已知head指向一个带头结点的单向链表
链表你是非顺序存储结构。因为数据结构是数据对象+关系 所以它必须在每个节点中包含数据元素(数据域)和它的关系(即指针域)链表中的第一个元素就是它的第一个节点。为了方便链表的操作,这里引入了头结点和头指针 所谓头结点就是在第一个节点前的节点,它不存放数据,仅仅存放第一个节点的地址。而头...

已知head指向一个带头结点的单词链表,链表中每个结点包含数据long和指向...
操作结果:销毁单链表L *\/void destroyList (linkList L) {linkList p,q;p = L->next; \/* p指向第一个结点 *\/while (p) { \/* 没到表尾 *\/q = p->next;

在链表中的一个结点的数据域和指针域有什么关系的?
数据域,就是存放这个节点的数据,指针域,存放的是另一个节点的地址,比如说单链表,指针域存放的就是后一个节点的地址。因为链表的节点在逻辑上是连续的,但是每个节点的物理地址可能不连续,就需要用一个指针,指向下一个节点的地址,这样,才能在找到一个节点后,继续寻找下一个节点。

...其中每个结点由一个整数域 data和指针域next组成,……
void paixu(Node **head);\/\/初始化链表 void InitList(Node **head){ (*head) = (Node *)malloc(sizeof(Node));(*head)->next = NULL;} \/\/创建链表 void CreateList(Node **head){ int i;printf("请输入要插入的数据(以0结束):\\n");scanf("%d", &i);while(i != 0){ Ins...

在数据结构中,head->next->data表示什么意思
head表示头指针,head->next表示下一个节点,data表示这个节点的数据域;head->next->data就是head下一个节点的数据;因为head是指头节点,所以这个也代表着链表第一个元素的值。

在一个单链表中,已知指针q指向指针p所指结点的前驱结点,则删除
因为p所指结点是q所指结点的前驱结点,也就是p--->next=q;要想删除结点q,则只需将P--->next =q--->next 即可。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) +指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。

链表的数据域和指针域有哪些区别?
数据域是结点中存储数据元素的部分。指针域是结点中存储数据元素之间的链接信息即下一个结点地址的部分。线性表的链式存储表示的特点是用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的)。因此,为了表示每个数据元素 与其直接后继数据元素 之间的逻辑关系,对数据...

要求写一个算法,将该链表中数据域值最大的那个点移到链表的最后面
首先弄一个数组,然后按照输入往里面写数字,同时定义一个max变量保存最大值,然后定义一个链表,把数组里面的数据加到链表尾部,如果是max就不加,最后所有数据加完了再加max,然后返回链表。

设单循环链表中结点的结构为(data,next),且rear是指向非空的带表头...
s = rear->next->next rear->next->next = s->next;free(s);

相似回答