我是链接列表的初学者,希望有人帮助我。
家庭作业需要:输入字符串(来自用户),将其存储在链接列表中,并对出现的字母计数。例如:input:hello output:hello h:1 e:1 l:2 o:1。
我现在有下面的代码,我想对“字母”功能有所帮助。谢谢!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct charact {
char ch;
int occurs;
struct charact *next;
};
typedef struct charact Char;
typedef Char *ListofChar;
typedef Char *CharNode_ptr;
void letters(char name[50], ListofChar *chars_ptr);
void report(ListofChar chars);
Char *createnode(char ch);
int main() {
char name[50];
ListofChar chars = NULL;
scanf("%s", name);
letters(name, &chars);
report(chars);
return 0;
}
Char *createnode(char ch) {
CharNode_ptr newnode_ptr ;
newnode_ptr = malloc(sizeof (Char));
newnode_ptr -> ch = ch;
newnode_ptr -> occurs = 0;
newnode_ptr -> next = NULL;
return newnode_ptr;
}
/*code*/
void letters(char name[50], ListofChar *lst_ptr) {
int i;
Char *temp=NULL;
Char *p=NULL;
for(i=0;name[i]!='\0';i++){
createnode(name[i]);
}
return;
}
void report(ListofChar chars) {
while(chars!=NULL){
printf("%c",chars->ch);
chars=chars->next;
}
return;
}
答案 0 :(得分:1)
对于“ Hel”输入,这大致是您要创建的列表:
+------+
| H |
+------+
| next |-+
+------+ |
------|
|
V
+------+
| E |
+------+
| next |-+
+------+ |
------|
|
V
+------+
| L |
+------+
| NULL |
+------+
这是您的代码创建的内容:
+------+
| H |
+------+
| NULL |
+------+
+------+
| E |
+------+
| NULL |
+------+
+------+
| L |
+------+
| NULL |
+------+
您需要将列表中的元素链接在一起。使用此绘图并在Google上进行搜索,您应该可以编写程序。