编写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;
}
带头列表: