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