设计一个算法,删除一个单链表L中元素值最大的结点。 …算法我写出来了,我该怎样创建链表,才能使用这个算法…
void delmaxnode(LinkList*&L)
{
LinkLisy* p = l->next, * pre = L, * maxp = p.*maxpre = pre;
while (p != NULL)
{
if(maxp->datadata)
{
maxp = p;
maxpre = pre;
}
pre = p;
p = p->next;
}
if (maxp != NULL) {
maxpre->next = maxp->next;
free(maxp);
}
}
供参考:
#include <stdio.h>
#include <malloc.h>
typedef struct LNode{//存储结构
int data;
struct LNode *next;
}LNode, LinkList;
void creatlinklist(LinkList *&L)
{
int n = 9, i;
LinkList *p,*q;
L = (LinkList*)malloc(sizeof(LNode));
L->next = NULL;
q = L;
for(i=0;i<n;i++)
{
p = (LinkList*)malloc(sizeof(LNode));
p->next = NULL;
p->data = n-i;
q->next = p;
q = p;
}
}
void delmaxnode(LinkList*&L)//设计一个算法,删除一个单链表L中元素值最大的结点。
{
LinkList* p = L->next, * pre = L, * maxp = p,*maxpre = pre;
while (p != NULL)
{
if(maxp->data < p->data)
{
maxp = p;
maxpre = pre;
}
pre = p;
p = p->next;
}
if (maxp != NULL){
maxpre->next = maxp->next;
free(maxp);
}
}
void print(LinkList *L)
{
LinkList *p = L;
while(p->next){
printf(p == L?"%d":"->%d",p->next->data);
p = p->next;
}
printf("\n");
}
int main()
{
LinkList *L;
creatlinklist(L);
print(L);
printf("\n****************\n\n删除单链表L中元素值最大的结点后:\n\n");
delmaxnode(L);
print(L);
return 0;
}