主题:非常感谢各位热心朋友,程序在这请大家修改
xuexiziji
[专家分:90] 发布于 2006-03-24 19:21:00
#include<stdio.h>
#include<conio.h>
#define N 3
charu(node *p,int x,int i)
{ node *s,*q;
s=(node *)malloc(sizeof(node));
s->data=x;
if(i==0)
{s->next=p->next;
p->next=s;
}
else
{q=get(p,i-1);
if(q==NULL)
return 0;
else
{s->next=q->next;
q->next=s;
}
}
return 1;
}
main()
{ typedef struct /* */
{ int data;
struct node *next;
}node,*p;
int i,n;
charu(p,2,1);/* 2为插入的元素直,1为插入的位置*/
for(i=0,i<N,i++)
scanf("%d\n",&p->data);
n=N;
n++;
for(i=0,i<n;i++)
{ printf("%d\n",p->data);
p=p->next;} getch();
}
回复列表 (共4个回复)
沙发
lusuo [专家分:10100] 发布于 2006-03-25 13:30:00
改什么是错了还是没结果!还是什么其他的!你不说叫我怎么改!
板凳
lijianqy [专家分:90] 发布于 2006-03-25 14:46:00
我不知你修改的需求,我按照自己的理解将程序作了适当的修改,在记事本里写的,没有调试可能有笔误,还请谅解,希望对你能有帮助.
#include<stdio.h>
#include<conio.h>
#define N 3
int Link_Length = N; //记录链表的长度
//定义结构体
struct t_node
{
int data;
struct t_node *next;
};
//定义别名
typedef struct t_node Node;
//定义链表变量
Node * example_link = NULL;
/*
*功能:获取指定位置的节点的地址
*输入:plink=链表,i=索引位置,从零开始
*输出:无
*返回值:索引节点的地址
*/
Node * get(Node *plink,int i)
{
if(NULL == plink)
return NULL;
int count = 0;
Node * pNext = plink;
while(count<i && pNext != NULL)
{
count++;
pNext = pNext->next;
}
return pNext;
}//endget()
/*
*功能:向指定链表中的指定位置前插入节点
*输入:plink=链表,x=新节点的值,i=插入位置
*输出:plink=插入节点后的新链表
*返回值:成功返回true, 否则为false
*/
bool Insert(Node *&plink,int x,int i)
{
Node *s = NULL; //新节点
Node *q = NULL; //中间变量
//构建新节点
s = (node *)malloc( sizeof(node) );
if( s == NULL )
return false;
s->data = x;
s->next = NULL;
if(i==0)//插入在头节点前
{
s->next = plink;
plink = s;
}
else//插入在中间部位
{//0
//获取需插入位置的节点
q = get(plink,i-1);
if( NULL==q )
return false;
s->next=q->next;
q->next=s;
}//endelse0
return true;
}//endInsert()
/*
*功能:初始化链表
*输入:无
*输出:无
*返回值:无
*/
void Init_Link(void)
{
Node *pNext = NULL; //游标
//头节点
example_link = (Node *)malloc( sizeof(Node) );
if(NULL == example_link)
return;
scanf("%d\n",&example_link->data);
example_link->next = NULL;
//中间节点
pNext = example_link; //为游标赋值
for(i=1,i<N,i++)
{
pNext->next = (Node *)malloc( sizeof(Node) );
if(NULL == pNext->next)
return;
scanf("%d\n",&pNext->next->data);
pNext->next->next = NULL;
pNext = pNext->next; //移动游标
}
}
main()
{
int i,n;
Node *pNext = NULL;
//初始化链表
Init_Link();
//插入新节点
Insert(example_link, 2, 1);/* 2为插入的元素值,1为插入的位置*/
//节点数增加
Link_Length++;
if(NULL == example_link)
return;
/*/在该行前面加"/"则使用第一方法
//第一方法
pNext = example_link;
for(i=0,i<Link_Length; i++)
{
printf("%d\n",pNext->data);
pNext = pNext->next;
}
/*/
//第二方法
pNext = example_link;
while(pNext != NULL)
{
printf("%d\n",pNext->data);
pNext = pNext->next;
}
//*/
getch();
}//endmain()
3 楼
xuexiziji [专家分:90] 发布于 2006-03-25 15:04:00
谢了,加我QQ151397316,
4 楼
lijianqy [专家分:90] 发布于 2006-03-25 15:29:00
报歉,我没有QQ,你调试一下吧,共同学习.
我来回复