永发信息网

急求 C语言 关于数剧结构 编程问题

答案:3  悬赏:80  手机版
解决时间 2021-07-26 16:54

假设有一个循环单链表的长度大于1,表表中既无头结点也无头指针.已知S为指向链表中某结点的指针,试编写算法,在链表中删除结点S的前趋结点.

题目就是上面那个,我想请您帮我写下完整的程序要C语言环境下直接可以运行的.......

谢谢帮忙了.......

最佳答案
已经测试通过,满意请采纳:

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

typedef struct _list {
int val;
struct _list* next;
} *node, list;

node Insert( node* head, node pos, int val )
{
node tmp;
tmp = ( node )malloc( sizeof( list ) );
tmp->val = val;
tmp->next = pos ? pos->next : *head;
if ( pos ) {
pos->next = tmp;
} else {
*head = tmp;
}
return tmp;
}

node Create( int* beg, int* end )
{
node head, t;
head = t = NULL;
while ( beg != end ) {
t = Insert( &head, t, *beg++ );
}
t->next = head;
return head;
}

void Print( node head )
{
node h = head;
do {
printf( "%d ", head->val );
head = head->next;
} while ( head != h );
putchar( '\n' );
}

int main()
{
int a[] = { 6,1,3,9,2,8,5,0,7,4 };
node h, S, t;
int i;
h = Create( a, a + 10 );
Print( h );

S = t = h;
srand( time( 0 ) );
for ( i = rand() % 100; i > 0; --i )
S = S->next;

while( t->next != S ) {
t = t->next;
}
printf( "node to be deleted: %d\n", S->val );
t->next = S->next;
free( S );
Print( t );
getchar();
return 0;
}
全部回答

就是一个环形链表嘛. S的前驱节点的Next指针肯定指向节点S. 那么就可以根据这个找出S的前驱节点.

这部分函数如下:

void DelS(LinkList S) { LinkList L=S,p; while(L->Next->Next!=S) { L=L->Next; } p=L->Next; //p指向S的前驱节点. L->Next=L->Next->Next; //从链表中去掉S的前驱节点. delete p; //释放S的前驱节点. }

单链表,而且没有头指直,根据“某结点”是找不到他的前驱结点的,根本无法实现。

楼主是不是题错了?

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
为什么莪玩游戏时 总需要验证码
数学数学,急求过程
哪里可以下《凤凰四重奏》?
韩国值得去吗?
2个月狗狗要怎么养
我想问问QQ靓号如果到期了怎么续费?能直接把
MSDN和VS帮助文档的区别
点样可以训练好只狗啊?
规章制度是死的,为什学生会的不讲人情?
nbtexplorer在哪里下载
在朋友都不在身边时、感到无助时,怎样让自己
一直以来感觉好大压力,每次考试都不能达到我
公司一直未签合同 是否违法了?
一个名言的理解
英语自我介绍怎么写 格式阿 形式 句型什么的
推荐资讯
我为什么不如别人了??
手机上QQ群聊能见别人发的图片吗?2009版的
关于DNF不灭称号
大同胶粉厂在哪
代码下载影片怎么下载
英语语法请教Book and newspaper are our goo
教师资格证可以通用吗,领取教师资格证的准考
餐饮自助茶的标语,自助餐要写标语让客人不要
铝密度是2.7g每立方厘米,一张铝箔长度27 宽72
关于迷失的自己的句子,人生方向迷失句子
给诚信设计标语,给学校花圃、音乐教室、体育
一句话中并字前要不要加逗号
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?