数据结构与算法中使用C语言编写,在VC++中运行,并在每行代码中加入注释 题目二、构造链串: 1.构造链串结构并初始化链串; 2.给链串赋值(链表的建立,思考:用头插法还是尾插法),注意:在此过程中同时还要把字符串的长度赋给对应的量; 3.打印字符串的内容(链串的遍历)。
时间: 2023-12-03 17:43:34 浏览: 93
利用C++实现以下经典数据结构算法:线性表、栈、队列、数组(特殊矩阵、稀疏矩阵压缩)、串(朴素模式匹配、KMP算法)、树.zip
以下是使用C语言编写,在VC++中运行的构造链串的代码,每行都有注释说明。
```c
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//定义链串的结构体
typedef struct node{
char data; //存储字符数据
struct node *next; //指向下一个元素的指针
}Node, *LinkString;
//初始化链串
void InitString(LinkString *s){
//创建头结点
*s = (LinkString)malloc(sizeof(Node));
(*s)->next = NULL; //将头结点的指针域置为NULL,表示链表为空
}
//给链串赋值
void StrAssign(LinkString s, char *str){
int len = strlen(str);
for(int i = 0; i < len; i++){
//创建新节点
LinkString p = (LinkString)malloc(sizeof(Node));
p->data = str[i];
p->next = s->next;
s->next = p; //头插法
}
}
//打印字符串的内容
void PrintString(LinkString s){
LinkString p = s->next;
while(p != NULL){
printf("%c", p->data);
p = p->next;
}
printf("\n");
}
int main(){
LinkString s;
InitString(&s); //初始化链串
char str[] = "Hello, world!";
StrAssign(s, str); //给链串赋值
PrintString(s); //打印字符串的内容
return 0;
}
```
在给链串赋值时,本代码采用了头插法,这是因为头插法的时间复杂度为O(1),而尾插法的时间复杂度为O(n),因此头插法更适合链表中元素的插入。
阅读全文