设a和b是两个用带有附加头结点的循环链表表示的多项式。试编写一个算法,计算这两个多项式的乘
设线性表为(1,13,16,18) ,以下程序用说明结构变量的方法建立头指针为head,尾结,点为18的单向循环链表,并输出链表中各结点中的数据。
#define NULL 0
Void main()
{
NODE a,b,c,d,*head,*p;
a.data=1;
b.data=13;
c.data=16;
d.data=18; /* d是尾结点*/
head=();
a.next=&b;
d.data=18; /* d是尾结点*/
head=();
a.next=&b;
b.next=&c;
c.next=&d;
()=head; /*以上结束建立循环链表的过程*/
p=head; /* p为工作指针,准备输出链表*/
do
{
printf("%d/n",());
();
}while();
}
在带有头结点的单链表L中,若要删除第一个结点,则需执行下列三条语句:______;L->next=U->next;free(U);。
以下程序实现带有头结点的单链表的建立,链表中每个结点包含数据域data(字符型)和指针域next,所建立链表的头指针由参数phd传回调用程序。在空格处填入正确内容。 include<stdio.h> include<stdlib, h> struct node { char data; struct node * next; }; void creatlist(【 】) { char ch; struct node * s, * r; * phd= malloc(sizeof (struct node)); r= * phd; ch=getchar(); while(ch !=@) { s = malloc(sizeof(struct node)); s->data=ch; r->next=s; r=s; ch= getchar(); }; r->next=【 】; } main () { struct node * head; head= NULL; creatlist(【 】) }
设有一头指针为L的带有表头结点的非循环双向链表,其每个结点中除有pred(前驱指针)、data(数据)和next(后继指针)域外,还有一个访问频度域freq。在链表被起用前,其值均初始化为零。每当在链表中进行一次Locate(L,x)运算时,令元素值为x的结点中freq域的值增1,并使此链表中结点保持按访问频度非增(递减)的顺序排列,同时最近访问的结点排在频度相同的结点的最后,以便使频繁访问的结点总是靠近表头。试编写符合上述要求的Locate(L,x)运算的算法,该运算为函数过程,返回找到结点的地址,类型
A.P==L
B.P->front==L
C.P==NULL
D.P->rear==L