编写int? fun(char? s[])函数,将八进制参数串s转换为十进制整数返回,若传入"77777"返回32767。
#include<string.h>
int fun(char s[]) {
int i = strlen(s)-1, h = 0, q = 1;
while (i>=0) {
h += (s[i] - '0') * q;
q *= 8;
i--;
}
return h;
}
?初始化单列表附加头结点的两种方式:
编写void? init(struct? xs? **hd)函数,初始化单链表附加的头结点。
struct? xs{
? ? ? ? int? cj;
? ? ? ? struct? xs? *next;
};
void? main()
{
? ? ? ? struct? xs? *head=NULL;
? ? ? ? init(&head);
? ? ? ? create(head);
}
struct xs* init() {
struct xs* p = (struct xs*)malloc(sizeof(struct xs));
p->next = NULL;
return p;
}
编写struct? xs? *init()函数,初始化单链表附加的头结点。
struct? xs{
? ? ? ? int? cj;
? ? ? ? struct? xs? *next;
};
void? main()
{
? ? ? ? struct? xs? *head=init();
? ? ? ? create(head);
}
struct xs* init() {
struct xs* p = (struct xs*)malloc(sizeof(struct xs));
p->next = NULL;
return p;
}
编写void? create(struct? xs? *hd,int? a[],int? n)函数,根据数组a采用尾插法创建带附加头结点的单链表。
struct? xs{
? ? ? ? int? cj;
? ? ? ? struct? xs? *next;
};
void? main()
{
? ? ? ? int? a[10]={1,2,3,4,5,10,6,7,8,9};
? ? ? ? struct? xs? *head=(struct? xs? *)malloc(sizeof(struct? xs));
? ? ? ? head->next=NULL;
? ? ? ? create(head,a,10);
}
void create(struct xs* hd, int a[], int n) {
struct xs* s = hd;
int i = 0;
for (i = 0; i < n; i++) {
s->next = (struct xs*)malloc(sizeof(struct xs) * n);
s->next->cj = a[i];
s = s->next;
}
s = s->next=NULL;
}
编写int? fun(struct? xs? *hd)函数,返回带头结点单链表所有数据结点的和。
struct? xs{
? ? ? ? int? cj;
? ? ? ? struct? xs? *next;
};
void? main()
{
? ? ? ? ......
? ? ? ? printf("%d\n",fun(head));
? ? ? ? ......
}
int fun(struct xs* hd) {
int s = 0;
struct xs* p = hd->next;
while (p != NULL) {
s += p->cj;
p = p->next;
}
//p->next = NULL;
return s;
}
带头列表: