代碼是這樣的
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
typedef struct linknode {
char data;
struct linknode* next;
}listack;
void initstack(listack* s) {
s = (listack*)malloc(sizeof(listack));
s->next = NULL;
}
int listackempty(listack* s) {
if(s->next== NULL)
return 0;
else
{
return 1;
}
}
void listackpush(listack* s, char a) {
listack* q;
q = (listack*)malloc(sizeof(listack));
q->data = a;
q->next = s->next;
s->next = q;
}
bool listackpop(listack* s,char &a) {
listack *q;
q = (listack*)malloc(sizeof(listack));
q = s->next;
a = q->data; //這里編譯器說 引發了例外: 讀取訪問權限沖突。q 是 0xCCCCCCCC。
s->next = q->next;
free(q);
return true;
}
int main() {
char a;
listack s;
initstack(&s);
for (a = 'a'; a <= 126; a++) {
listackpush(&s, a);
}
while (listackempty)
{
char b;
listackpop(&s,b);
putchar(b);
}
printf("\n");
system("pause");
return 0;
}
求解 謝謝!!
uj5u.com熱心網友回復:
因為s的next沒有賦值uj5u.com熱心網友回復:
大佬,能具體指點一下嗎,謝謝
uj5u.com熱心網友回復:
吃飯完我幫你看看源代碼uj5u.com熱心網友回復:
好的,謝謝大佬哈
uj5u.com熱心網友回復:
你把initstack去掉,那樣初始化是有問題的。#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
typedef struct linknode {
char data;
struct linknode* next;
}listack;
int listackempty(listack* s) {
if(s->next== NULL)
return 0;
else
{
return 1;
}
}
void listackpush(listack* s, char a) {
listack* q;
q = (listack*)malloc(sizeof(listack));
q->data = a;
q->next = s->next;
s->next = q;
}
bool listackpop(listack* s,char &a) {
listack *q;
q = (listack*)malloc(sizeof(listack));
q = s->next;
a = q->data; //這里編譯器說 引發了例外: 讀取訪問權限沖突。q 是 0xCCCCCCCC。
s->next = q->next;
free(q);
return true;
}
int main() {
char a;
listack *s = (listack*)malloc(sizeof(listack));
s->next = NULL;
//initstack(s);
for (a = 'a'; a <= 126; a++) {
listackpush(s, a);
}
while (listackempty(s))
{
char b;
listackpop(s,b);
putchar(b);
}
printf("\n");
system("pause");
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/64577.html
標籤:C++ 語言
上一篇:麻煩各位大佬幫忙看看,萬分感謝
