使用C语言编写构造链串: 1.构造链串结构并初始化链串; 2.给链串赋值(链表的建立,思考:用头插法还是尾插法),注意:在此过程中同时还要把字符串的长度赋给对应的量;打印字符串的内容(链串的遍历)。
时间: 2024-03-18 16:39:51 浏览: 54
好的,我来回答你的问题。
首先,我们需要定义链串的结构体。链串结构体包含两个成员变量:一个指向下一个节点的指针和一个字符型变量,表示该节点存储的字符。定义如下:
```c
typedef struct node {
char data;
struct node *next;
} Node, *LinkString;
```
接下来,我们可以初始化链串,也就是创建一个空的链串。这里我们可以使用 malloc 函数动态分配内存。初始化代码如下:
```c
LinkString initString() {
LinkString s = (LinkString)malloc(sizeof(Node));
s->next = NULL;
return s;
}
```
接着,我们需要编写一个函数来给链串赋值。这里我们使用头插法来构建链表,因为头插法比较简单,而且可以保持字符串的顺序不变。同时,每插入一个节点,我们需要更新链串的长度。函数代码如下:
```c
void assignString(LinkString s, char *str) {
int len = strlen(str);
for (int i = 0; i < len; i++) {
Node *p = (Node*)malloc(sizeof(Node));
p->data = str[i];
p->next = s->next;
s->next = p;
}
s->len = len; // 将字符串长度赋给链串的长度
}
```
最后,我们需要编写一个函数来打印链串的内容,即遍历链表。代码如下:
```c
void printString(LinkString s) {
Node *p = s->next;
while (p != NULL) {
printf("%c", p->data);
p = p->next;
}
printf("\n");
}
```
完整代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct node {
char data;
struct node *next;
} Node, *LinkString;
LinkString initString() {
LinkString s = (LinkString)malloc(sizeof(Node));
s->next = NULL;
return s;
}
void assignString(LinkString s, char *str) {
int len = strlen(str);
for (int i = 0; i < len; i++) {
Node *p = (Node*)malloc(sizeof(Node));
p->data = str[i];
p->next = s->next;
s->next = p;
}
s->len = len; // 将字符串长度赋给链串的长度
}
void printString(LinkString s) {
Node *p = s->next;
while (p != NULL) {
printf("%c", p->data);
p = p->next;
}
printf("\n");
}
int main() {
LinkString s = initString();
char *str = "hello, world!";
assignString(s, str);
printString(s);
return 0;
}
```
这样,我们就成功地使用 C 语言编写了一个链串,并实现了初始化、赋值、遍历等基本操作。
阅读全文