一个链表创建、反转、打印的C语言代码
2011-05-12 15:11
351 查看
代码在Turboc++3.0环境下运行正常,但是在vs环境下能编译成功,但输入数据有点问题。
红色部分修改后,代码在vs下也ok了。但是为什么修改前在Turboc++3.0环境下运行正常呢?
#include <stdio.h>
#include <malloc.h>
#include <ctype.h>
typedef struct node LNKLIST;
struct node
{
int data;
LNKLIST *next;
};
int main(void)
{
LNKLIST *start = NULL,*p,*q,*temp;
char opt;
do
{
printf("/n/t/t Menu"
"/n/t 1. Create/Append Linked List"
"/n/t 2. Reverse Linked List"
"/n/t 3. Display Linked List"
"/n/t 4. Exit"
"/n Enter your choice:"
);
opt = getchar();
flushall();
switch(opt)
{
case '1':
do
{
p = start;
while (p != NULL && p->next != NULL) /*修改前while(p->next != NULL)*/
{
p = p->next;
}
q = (LNKLIST*)malloc(sizeof(LNKLIST));
printf("/nEnter the data: ");
scanf("%d",&q->data);
q->next = NULL;
if(start == NULL)
start = q;
else
p->next = q;
printf("Wanna continue? ");
} while (tolower(getchar())== 'y');
break;
case '2':
p = start;
q = p->next;
while(q!=NULL)
{
temp = q->next;
q->next = p;
p = q;
q = temp;
}
start->next = NULL;
start = p;
break;
case '3':
p = start;
printf("/nstart = %u ",start);
while(p!=NULL)
{
printf("-> [%d | %u]",p->data,p->next);
p = p->next;
}
getchar();
}
} while (opt != '4');
printf("/nsuccess/n");
return 0;
}
红色部分修改后,代码在vs下也ok了。但是为什么修改前在Turboc++3.0环境下运行正常呢?
#include <stdio.h>
#include <malloc.h>
#include <ctype.h>
typedef struct node LNKLIST;
struct node
{
int data;
LNKLIST *next;
};
int main(void)
{
LNKLIST *start = NULL,*p,*q,*temp;
char opt;
do
{
printf("/n/t/t Menu"
"/n/t 1. Create/Append Linked List"
"/n/t 2. Reverse Linked List"
"/n/t 3. Display Linked List"
"/n/t 4. Exit"
"/n Enter your choice:"
);
opt = getchar();
flushall();
switch(opt)
{
case '1':
do
{
p = start;
while (p != NULL && p->next != NULL) /*修改前while(p->next != NULL)*/
{
p = p->next;
}
q = (LNKLIST*)malloc(sizeof(LNKLIST));
printf("/nEnter the data: ");
scanf("%d",&q->data);
q->next = NULL;
if(start == NULL)
start = q;
else
p->next = q;
printf("Wanna continue? ");
} while (tolower(getchar())== 'y');
break;
case '2':
p = start;
q = p->next;
while(q!=NULL)
{
temp = q->next;
q->next = p;
p = q;
q = temp;
}
start->next = NULL;
start = p;
break;
case '3':
p = start;
printf("/nstart = %u ",start);
while(p!=NULL)
{
printf("-> [%d | %u]",p->data,p->next);
p = p->next;
}
getchar();
}
} while (opt != '4');
printf("/nsuccess/n");
return 0;
}
相关文章推荐
- C语言各种链表操作(创建、打印、删除、插入、反转)
- C:链表的操作,如何创建一个链表并打印
- C语言实现单链表(带头结点)的基本操作(创建,头插法,尾插法,删除结点,打印链表)
- c语言链表基本操作(带有创建链表 删除 打印 插入)
- C语言实现单链表(带头结点)的基本操作(创建,头插法,尾插法,删除结点,打印链表)
- [002]链表笔记--编程实现一个单链表的创建/测长/打印
- C语言单向链表:创建&&打印#ShadowFox个人作品
- 请大家看一下一个c语言中的链表问题,下面的代码是有错误的!!请大家说出错误的原因,以及修改的方法!!!
- C语言:从表尾到到表头逆向创建链表,反转链表
- 单链表创建插入删除打印反转
- 用c语言完成一个双向链表的创建,插入,删除
- 单链表反转,单链表创建,单链表尾部插入,单链表打印
- [c] 单链表创建,打印和反转
- 一个正确的c语言链表代码(中间也有些bug)
- 链表的基本操作(创建,查找指定位置元素,删除指定元素,插入,倒置,去重,求集合的差,分别交换结点与交换结点值实现的冒泡排序,将两个有序链表合并成一个有序链表)c语言实现
- C语言 链表的创建--打印--逆置--新增--删除--排序--释放
- C语言 链表反向打印与反转
- 链表的创建 打印 反转
- [数据结构]链表创建、打印、反转
- <笔试><面试>单链表相关(1)从尾到头打印链表、删除一个无头链表的非尾结点