使用c语言编写1.构造链串结构并初始化链串; 2.给链串赋值(链表的建立,思考:用头插法还是尾插法),注意:在此过程中同时还要把字符串的长度赋给对应的量; 3.打印字符串的内容(链串的遍历)
时间: 2024-03-17 10:46:47 浏览: 52
c语言实现链表的基本操作,链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。
好的,我可以为您解答这个问题!
首先,我们需要定义一个链串结构体,来保存链串的信息,例如字符串内容和长度:
```c
typedef struct node {
char c; // 字符
struct node *next; // 指向下一个节点的指针
} Node;
typedef struct {
Node *head; // 链串的头节点
int length; // 链串的长度
} LinkString;
```
接下来,我们需要初始化链串,即创建一个空的链串:
```c
void initString(LinkString *str) {
str->head = NULL; // 头节点为空
str->length = 0; // 长度为0
}
```
然后,我们需要给链串赋值。这里我们选择尾插法来建立链表,因为这样可以避免每次插入都要遍历整个链表。具体实现如下:
```c
void assignString(LinkString *str, char *s) {
Node *p, *q;
int i;
for (i = 0; s[i] != '\0'; i++) {
p = (Node *)malloc(sizeof(Node)); // 创建一个新节点
p->c = s[i]; // 存储字符
p->next = NULL; // 新节点的下一个节点为空
if (str->head == NULL) { // 如果链表为空,将新节点设为头节点
str->head = p;
q = p;
} else { // 否则将新节点插入到尾部
q->next = p;
q = p;
}
}
str->length = i; // 将字符串长度赋值给链串
}
```
最后,我们需要遍历链表,打印字符串的内容:
```c
void printString(LinkString *str) {
Node *p;
for (p = str->head; p != NULL; p = p->next) {
printf("%c", p->c);
}
printf("\n");
}
```
现在,我们可以在主函数中使用这些函数来创建一个链串并输出它的内容:
```c
int main() {
LinkString str;
initString(&str);
assignString(&str, "Hello, World!");
printString(&str);
return 0;
}
```
输出结果为:
```
Hello, World!
```
阅读全文