有没有办法通过链表?
获取字符串输入(就像我们对任何整数所做的那样)例如:此代码显示运行时错误:
struct node
{
char c;
struct node *link;
};
while(1)
{
val=getch();
if(val!=10)
add(&a[i],val);
else
break;
}
我想接受任何输入字符串,例如 - "asdfghj"
,其字符串长度未知?
答案 0 :(得分:3)
假设您有一个LinkedList
- 类充当链接列表的接口,并且它具有以正确方式向列表添加addNode()
的函数node
。
我还假设您想知道的是如何在链接列表中输入char
string
中的每个node
并知道如何管理链接列表。
假设您正在使用C ++ 11
int main()
{
LinkedList list;
string input;
cin >> input;
for(auto i: input)
{
list.addNode(i);
}
}
答案 1 :(得分:0)
C
的例子#include <stdio.h>
#include <stdlib.h>
typedef struct node {
char c;
struct node *link;
} Node;
typedef struct s_ {
Node *top;
Node *curr;
} String;
Node *Node_new(char ch){
Node *p = calloc(1, sizeof *p);
p->c = ch;
return p;
}
String *String_new(void){
String *p = calloc(1, sizeof *p);
return p;
}
void String_drop(String *s){
Node *p = s->top;
while(p){
s->curr = p;
p = p->link;
free(s->curr);
}
//s->top = s->curr = NULL;
free(s);
}
void String_add(String *s, char c){
if(s->top == NULL){
s->curr = s->top = Node_new(c);
} else {
s->curr = s->curr->link = Node_new(c);
}
}
String *get_string(FILE *fp){
String *s = String_new();
int ch;
while(EOF!=(ch=fgetc(fp)) && ch !='\n'){
String_add(s, (char)ch);
}
return s;
}
void put_string(String *s){
Node *p;
for(p = s->top; p ; p = p->link)
putchar(p->c);
putchar('\n');
}
int main(void) {
String *s = get_string(stdin);
put_string(s);
String_drop(s);
return 0;
}
答案 2 :(得分:0)
你可以轻松思考。因为你可以声明一个字符串变量而不是char。之后,您可以通过创建结构变量来正常获取输入。例如:
#include <bits/stdc++.h>
using namespace std;
struct node
{
string s;
struct node *link;
};
int main(){
node ob;
cin>>ob.s;
cout<<ob.s;
}