我们知道栈的特点是先进后出, 学习了这样的数据结构就得想办法应用到实际上去,反转字符串的方法有很多,其中一个方法就是通过栈来反转字符串,唯一与之前不同的是结构体里面的data的数据类型变成了char类型。
typedef struct List
{
char data;
struct List* next;
}List;
剩下的操作都是相同的:
List* listInit()
{
List* list=(List*)malloc(sizeof(List));
list->data='0';
list->next=NULL;
return list;
}
void push(List* list,char c)
{
List* temp=(List*)malloc(sizeof(List));
temp->data=c;
temp->next=list->next;
list->next=temp;
}
void pop(List* list)
{
List* del=list->next;
printf("pop:%c \n",del->data);
list->next=del->next;
free(del);
}
void print(List* list)
{
List* temp=list->next;
printf("stack: ");
while(temp)
{
printf("%c-->",temp->data);
temp=temp->next;
}
printf("NULL\n");
}
我们在主函数中写入需要发转的字符串,然后入栈,出栈,就能得到反转
int main(int argc,char* argv[])
{
char s[10]="hello";
int len=strlen(s);
printf("原字符串:\n");
puts(s);
for(int i=0;i<len;i++)
push(list,s[i]);
printf("push over\n");
print(list);
for(int i=0;i<len;i++)
pop(list);
printf("pop over\n");
print(list);
}
运行截图: