用C语言写1.构造链串结构并初始化链串; 2.给链串赋值(链表的建立,思考:用头插法还是尾插法),注意:在此过程中同时还要把字符串的长度赋给对应的量; 3.打印字符串的内容(链串的遍历)。
时间: 2024-03-14 13:44:18 浏览: 24
好的,我来回答你的问题。
首先,关于构造链串结构和初始化链串,我们可以定义一个结构体来表示链串中的每个节点,包括该节点的值和指向下一个节点的指针。代码如下:
```c
typedef struct Node {
char val;
struct Node* next;
} Node;
```
接下来,我们可以定义一个函数来初始化一个空的链串。代码如下:
```c
Node* initString() {
Node* head = (Node*) malloc(sizeof(Node));
head->next = NULL;
return head;
}
```
这个函数会创建一个头节点,并将其 next 指针设为 NULL,表示这是一个空的链串。
然后,我们可以定义一个函数来给链串赋值。这里我们选择使用尾插法来建立链表。代码如下:
```c
int setString(Node* head, char* s) {
Node* tail = head;
int len = 0;
while (*s != '\0') {
Node* node = (Node*) malloc(sizeof(Node));
node->val = *s++;
node->next = NULL;
tail->next = node;
tail = node;
len++;
}
return len;
}
```
这个函数会遍历输入的字符串,对于每个字符,创建一个新的节点,并将其插入到链表的末尾。同时,我们还记录了链串的长度,并将其作为函数的返回值。
最后,我们可以定义一个函数来打印链串的内容。代码如下:
```c
void printString(Node* head) {
Node* node = head->next;
while (node != NULL) {
printf("%c", node->val);
node = node->next;
}
}
```
这个函数会遍历整个链串,并打印每个节点的值。
下面是完整的代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
char val;
struct Node* next;
} Node;
Node* initString() {
Node* head = (Node*) malloc(sizeof(Node));
head->next = NULL;
return head;
}
int setString(Node* head, char* s) {
Node* tail = head;
int len = 0;
while (*s != '\0') {
Node* node = (Node*) malloc(sizeof(Node));
node->val = *s++;
node->next = NULL;
tail->next = node;
tail = node;
len++;
}
return len;
}
void printString(Node* head) {
Node* node = head->next;
while (node != NULL) {
printf("%c", node->val);
node = node->next;
}
}
int main() {
Node* head = initString();
char* s = "hello, world!";
int len = setString(head, s);
printf("String length: %d\n", len);
printString(head);
return 0;
}
```
希望这个代码能够帮助你理解如何用 C 语言构造链串结构,并对其进行初始化、赋值和打印。