当前位置:首页 » 服务存储 » 链表中可以存储字母么
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

链表中可以存储字母么

发布时间: 2022-02-17 12:14:56

① 如何查找链表中存储的汉字

把char换成wchar_t

② 用单链表结构存放26个英文字母的线性表,写出c语音程序

#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>
#include <string.h>
typedef struct CHAR{
char _char;
struct CHAR *next;
}CHAR;
int main()
{
CHAR *head=(CHAR *)malloc(sizeof(CHAR));
memset(head,0,sizeof(CHAR));
head->_char=getchar();
for(int i=0;i<25;i++){
head->next=(CHAR *)malloc(sizeof(CHAR));
memset(head,0,sizeof(CHAR));
head=head->next;
head->_char=getchar();
}
return 0;
}

不保证正确

③ 如何存储链表

#include <stdio.h>
#include <memory>
typedef struct Lnode
{
int data;
Lnode* next;
}Lnode;
Lnode* creatLink()
{
int i;
Lnode *cur,*pre,*head;
head=(Lnode*)malloc(sizeof(Lnode));
for(i=1,pre=head;i<=20;i++)
{
cur=(Lnode*)malloc(sizeof(Lnode));
cur->data=i;
cur->next=NULL;
pre->next=cur;
pre=pre->next;
}
return head;
}

int main()
{
FILE *fp,*fp1;
if((fp=fopen("abc.dat","w"))==NULL)
{
printf("打开abc.dat有问题!");
return -1;
}
Lnode *root=creatLink();
while(root=root->next)
{
fwrite(root,sizeof(Lnode),1,fp);

}
fclose(fp);

if((fp1=fopen("abc.dat","r"))==NULL)
{
printf("打开abc.dat有问题!");
return -1;
}
Lnode *root1=(Lnode*)malloc(sizeof(Lnode));
while(!feof(fp1))
{
fread(root1,sizeof(Lnode),1,fp1);
printf("%d ",root1->data);
if(root1->next)
root1=root1->next;
}
fclose(fp1);

}

④ 求问一个关于链表里字符串储存的问题

同学,认真看一下李春葆、尹为民版的数据结构教程吧,ANSI C基础知识也不扎实哦!
typedef struct Line *LPosition;
struct Line
{
char a[80];//用于存放该句字符串
LPosition NextL;
};
我大致看了一下,应该写成
typedef struct Line
{
char a[80];//用于存放该句字符串
Line * NextL;

}LPosition;
后面的代码可能还有问题!
哎,既然看了就全部帮你找出错误吧!
首先要定义一个头结点:
LPosition *P;

LPosition *L=(struct LPosition *)malloc(sizeof(LPosition));
P=L;//保存头结点
如下循环写入字符串:

{
LPosition *Line1=(struct LPosition *)malloc(sizeof(LPosition));
//然后从这里写入字符串,我就不多写了,

L->NextL=Line1;
Line1=L;
}
//循环结束!
以上就把一组字符串存储在了以P为头节点的链表里了!
望采纳!
要多学习哦!

⑤ 关于一个字母链表的问题,求指导!!!

因为函数 delete_char中r在进入循环前未赋初始值,而删除字母a不会进入循环,导致r->next是一个无效的指针,应该修改如下:
void delete_char(LinkList &L,char X){ /*删除字母X*/
LinkList p,r;
p=L->next;
r = L;
while((p->data!=X)&&(p->next!=NULL)){
r=p;p=p->next;
}
if(p->data==X){
r->next=p->next;free(p);
}
else printf("not found");
}

⑥ 链表在内存中的存储方式到底是怎样的数据域跟指针域的类型又分别是什么

链式存储表示的特点是用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的)。因此,为了表示每个数据元素 与其直接后继数据元素 之间的逻辑关系,对数据元素 来说,除了存储其本身的信息之外(各种数据类型),还需存储一个指示其直接后继的信息(即直接后继的存储位置)(指针类型)。由这两部分信息组成一个"结点",表示线性表中一个数据元素

⑦ 如何在c语言中不用数组储存字母

方法一:用char类型的变量
方法二:用string类型的变量(前提:楼主的程序不受'a'与“a”区别的限制)
方法三:用单链表(如果楼主学过《数据结构》,那么我们可以详谈)
方法四:用ASCII码代替字母(前提:需要额外写一段ASCII转化为字母的程序)

⑧ 数据结构中的链表是不是可以存放不同类型的数据 int型char型之类的 还是只能存放同一种类型的元素

要看你建的是什么类型的表了 要是你typedef的是整型的表那就只能放整形的数据 double float这些就不行 但是要是你用结构体定义里面包括不同的类型也是可以的 比如说你要建个学生姓名和成绩的链表就可以这样
typedef struct data{
int num;
char name[20];
float score[M];
} data; //定义学生资料结构体

typedef struct stu{
data student;
struct stu *next;
}stu,*LinkList; //定义链表头结点
然后再建立这个结构体的链表
L=(LinkList)malloc(sizeof(stu));
if(!L)
return 0; //异常处理
L->next=NULL; //建立带头结点的单链表
下面接着输入学生资料函数就可以了 这样也就是可以同时输入不同类型数据了
我没打全 不知道明白没.....我觉得说的挺乱.............

⑨ C语言 建立链表把26个字母存进去并

#include<stdio.h>
#include<stdlib.h>

typedef struct yhzdy{
char date;
struct yhzdy *next;
}lb;

int main(){
int i, m;
lb *p, *head;

m=sizeof(lb);
head=(lb *)malloc(m);
head->date='a';
head->next=NULL;

for(i=1;i<26;i++){
p=(lb*)malloc(m);
p->date='a'+i;
p->next=head;
head=p;
}

p=head;
for(;p!=NULL;){
printf("%c ",p->date);
p=p->next;
}
printf("\r\n");
return 0;
}

⑩ 怎么将string类型也像char一样存储在链表中求源代码!

#include <stdio.h>
#include <stdlib.h>
typedef char DATA;
struct linked_list
{
DATA d;
struct linked_list *next;
};
typedef struct linked_list ELEMENT;
typedef ELEMENT *LINK;

ELEMENT ehead = ;
LINK ltail = &ehead;

void string_to_list(char *p);
void print_list();
void free_list();

void main()
{
string_to_list("Hello world");
print_list();
free_list();
}

// 通过递归方法把字符串填入链表中,填入
// 过程中自动分配链表节点空间。
void string_to_list(char *p)
{
if (*p == '\0')
{
return;
}
else
{
ltail->next = (LINK)malloc(sizeof(ELEMENT));
ltail = ltail->next;
ltail->next = NULL;
ltail->d = *p;
string_to_list(p + 1);
}
}

//输出链表内容
void print_list()
{
ltail = ehead.next;
while(ltail)
{
printf("%c", ltail->d);
ltail = ltail->next;
}
}

//释放链表
void free_list()
{
LINK tmp;
ltail = ehead.next;
while(ltail)
{
tmp = ltail;
ltail = ltail->next;
free(tmp);
}
ehead.next = NULL;
}