這裡蒐索程式師資訊,查找有用的技術資料
當前位置:首頁 » 服務存儲 » 鏈表中可以存儲字母么
擴展閱讀
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;
}