该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
4 typedef struct {
5 int data;
6 int freq; //表示访问频度
7 struct DLnode *next;
8 struct DLnode *pre;
9 }DLnode;
10
每当对链表进行一次 Locate(L,x)的操作后,被访问的结点(即元素值等于 x 的结点)中的频度域 freq 的值便增 1,同时调整链表中结点之间的次序,使其按访问频度非递增 的次序顺序排列,以便始终保持被频繁访问的结点总是靠近表头结点。
72 int Locate(DLnode *L, int x)
73 {
74 DLnode *p = L->next, *q;
75 while(p != L && p->data != x) p = p->next;
76 if(!p) return 0;
77 p->freq++;
78 q = p;
79 while(q != L && q->freq <= p->freq) q = q->next;
80 p->pre->next = p->next;
81 p->next->pre = p->pre;
82 p->pre = q;
83 p->next = p->next;
84 q->next->pre = p;
85 q->next = p;
86 return 1;
87 }
gcc -g 3_38.c -o 3_38
显示:
3_38.c:80:8: 错误: 提领指向不完全类型的指针
3_38.c:81:9: 错误: 提领指向不完全类型的指针
3_38.c:82:9: 警告: 从不兼容的指针类型赋值 [默认启用]
3_38.c:84:9: 错误: 提领指向不完全类型的指针
3_38.c:85:10: 警告: 从不兼容的指针类型赋值 [默认启用]
请问是不是80,81,84的用法是错误的?一定得再用一个指针?
另外82的集警告是不是正常的?