新人诚心求教一个循环链表的问题

xue?? 2016-10-16 10:23:10
这个是题目

下面附上代码 是学校的ACM练习题 连续搞了很久 一直是RUNtime error运行时错误 但是我自己的电脑是能输出答案的
但是提交时不能通过 是不是有些地方我没有想到 希望各位大神帮我指出一下

#include<stdio.h>
#include<stdlib.h>
#include<string.h>


struct node{
char c;
struct node *next;
};

typedef struct node *Link;

Link init();
void Delete(Link *L);
void move(Link *L);
void Insert(Link *L,char ch);
void print(Link head);





int main(void){
char ch;
int i;
int playnum;
int choose;
Link L;
scanf("%d", &playnum);
L = init();


for(i=0;i<playnum;i++){
scanf("%d", &choose);

if(choose==1){

scanf(" %c",&ch);
Insert(&L,ch);

}
if(choose==2){
if(!(L->next==L)){
Delete(&L);
}

}
if(choose==3){

L = L->next;

}

}


print(L);
printf("\n");
return 0;
}


Link init(){
Link head;
Link before;
Link newnode;
Link tall;

int i, num;
char str[1000];
//初始字符串的输入
scanf("%s",str);
num = strlen(str);

head = (Link)malloc(sizeof(struct node));
if(!head)
return NULL;
head->c = str[0];
head->next = NULL;
before = head;
//讲初始字符串接入链表
for(i=1;i<num;i++){
newnode = (Link)malloc(sizeof(struct node));
if(!newnode)
return NULL;
newnode->c = str[i];
newnode->next = NULL;
before->next = newnode;
before = newnode;
}
newnode->next = head;
tall = newnode;

return tall;
}


void Insert(Link *L,char ch){
Link p,s;
p = *L;
s = (Link)malloc(sizeof(struct node));

s->c = ch;
//
s->next = p->next;
p->next = s;
//指针后移
p = p->next;

*L = p;

}

void Delete(Link *L){
Link p,q;
p = *L;
q = p->next;
p->next = q->next;
free(q);
*L = p;
}
void print(Link head){
Link p;
p = head;
do
{
printf("%c",p->c);
p = p->next;
}while(head!=p);


}




测试用数据
...全文
215 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧