数据结构问题,谁帮我解决下啊!十万火急啊,不然就毕不了业了!

(1).从键盘输入20个整数,产生不带头的单链表,并输入结点值.
(2).从键盘输入1个整数,表示欲查找的结点位置,在单链表中查找该结点的位置.若找到,则显示”找到了”;否则显示”找不到”.
(3).从键盘输入2个整数,一个表示欲插入的位置i,另一个表示欲插入的数值x,将x插入在对应位置上.进行插入,输出单链表所有的结点值,关擦输出结果.
(4).从键盘输入一个整数,表示欲插入的位置.进行删除,输出单链表所有结点值,关擦输出结果.
(5).将单链表中值重复的结点删除,使所的结果表中个结点值均不先同,输出单链表所有结点值,观察输出结果.
(6).删除其中所有数据值为偶数的结点,输出单链表所有结点值.
(7).把单链表变成带表头结点的循环链表,输出循环链表所有结点值.
各位朋友,我知道这个问题量很大,而且我出的分数也不高.但我只有这么多分了,而且这个关系到我的终生.希望大家帮个忙.感激不尽.
谢谢.
可以发到我的邮箱里qqybjgy@163.com
再次谢过.
昨天赚了些分,答案满意的追加分数50
周五就要的!

哥们,如果连这些东西都不会,毕业了怎么找工作啊?改行吗?

下边答案是按照题目要求写的,你看着改点吧。
如果 malloc.h 没有的话,试试 alloc.h。
我能做的就这些了。

#include <stdio.h>
#include <malloc.h>

typedef struct Item
{
int iNum;
struct Item * pNext;
} Item;

Item* ListOfFunc1 = NULL;
Item CircleHead = {0, NULL};

void Func1();
void Func2();
void Func3();
void Func4();
void Func5();
void Func6();
void Func7();

void main()
{
Func1();
Func2();
Func3();
Func4();
Func5();
Func6();
Func7();

return;
}

void Func1()
{
int i = 0;
int iGot = 0;
Item** pListEnd = &ListOfFunc1;
Item* pTemp = NULL;

/* Input */
printf("\nFunc1:\nInput 20 number here:\n");

for ( i = 0; i < 20; ++i )
{
*pListEnd = (Item*)malloc(sizeof(Item));

(*pListEnd)->pNext = NULL;
scanf("%d", &(*pListEnd)->iNum);

pListEnd = &((*pListEnd)->pNext);
}

/* Output */
printf("\nOutput:\n");
for ( pTemp = ListOfFunc1; pTemp; pTemp = pTemp->pNext )
{
printf("%5d", pTemp->iNum);
}
printf("\n");

return;
}

void Func2()
{
int iFindFlag = 0;
int iFindNum = 0;
Item* pTemp = NULL;
/* Input */
printf("\nFunc2:\nInput 1 number to find:\n");
scanf("%d", &iFindNum);

for ( pTemp = ListOfFunc1; pTemp; pTemp = pTemp->pNext )
{
if ( iFindNum == pTemp->iNum )
{
iFindFlag = 1;
break;
}
}

if ( iFindFlag )
{
printf("Found!\n");
}
else
{
printf("Can not found!\n");
}

return;
}

void Func3()
{
int iStation = 0;
int iValue = 0;
Item** ppChangePointer = &ListOfFunc1;
Item* pTemp = NULL;
/* Input */
printf("\nFunc3:\nInput 2 numbers to insert.\n");
printf("1st number means the station, and 2nd one means the value:\n");

scanf("%d%d", &iStation, &iValue);

while ( (0 < iStation--) && ( NULL != *ppChangePointer ) )
{
ppChangePointer = &(*ppChangePointer)->pNext;
}

pTemp = *ppChangePointer;

/* Insert */
*ppChangePointer = (Item*)malloc(sizeof(Item));

(*ppChangePointer)->iNum = iValue;
(*ppChangePointer)->pNext = pTemp;

/* Output */
printf("\nOutput:\n");
for ( pTemp = ListOfFunc1; pTemp; pTemp = pTemp->pNext )
{
printf("%5d", pTemp->iNum);
}
printf("\n");

return;
}

void Func4()
{
int iStation = 0;
Item** ppChangePointer = &ListOfFunc1;
Item* pTemp = NULL;

/* Input */
printf("\nFunc4:\nInput 1 number for station of item to delete.\n");

scanf("%d%d", &iStation);

while ( (0 < iStation--) && ( NULL != *ppChangePointer ) )
{
ppChangePointer = &(*ppChangePointer)->pNext;
}

/* Delete */
if ( NULL == *ppChangePointer )
{
printf("\nBad Input!\n");
}
else
{
pTemp = *ppChangePointer;
*ppChangePointer = (*ppChangePointer)->pNext;

free(pTemp);
printf("\nDelete!\n");
}

/* Output */
printf("\nOutput:\n");
for ( pTemp = ListOfFunc1; pTemp; pTemp = pTemp->pNext )
{
printf("%5d", pTemp->iNum);
}
printf("\n");

return;
}

void Func5()
{
int iValue = 0;
Item** ppChangePointer = NULL;
Item* pTemp = NULL;
Item* pIndex = NULL;

printf("\nFunc5:\nDelete to make different\n");

for ( pIndex = ListOfFunc1; pIndex; pIndex = pIndex->pNext )
{
ppChangePointer = &pIndex->pNext;

while ( *ppChangePointer )
{
if ( (*ppChangePointer)->iNum == pIndex->iNum )
{
/* is same one of 'pIndex'.Delete! */
pTemp = *ppChangePointer;
*ppChangePointer = (*ppChangePointer)->pNext;

free(pTemp);
}
else
{
ppChangePointer = &(*ppChangePointer)->pNext;
}
}
}

printf("Done!\n");

/* Output */
printf("\nOutput:\n");
for ( pTemp = ListOfFunc1; pTemp; pTemp = pTemp->pNext )
{
printf("%5d", pTemp->iNum);
}
printf("\n");
return;
}

void Func6()
{
Item** ppChangePointer = &ListOfFunc1;
Item* pTemp = NULL;

printf("\nFunc6:\nDelete evens");

while ( *ppChangePointer )
{
if ( 0 == (1 & (*ppChangePointer)->iNum) )
{
/* even, Delete! */
pTemp = *ppChangePointer;
*ppChangePointer = (*ppChangePointer)->pNext;

free(pTemp);
}
else
{
ppChangePointer = &(*ppChangePointer)->pNext;
}
}

/* Output */
printf("\nOutput:\n");
for ( pTemp = ListOfFunc1; pTemp; pTemp = pTemp->pNext )
{
printf("%5d", pTemp->iNum);
}
printf("\n");
return;
}

void Func7()
{
Item** ppChangedPointer = &ListOfFunc1;
Item* pTemp = NULL;

printf("\nFunc7:\nMake a circle\n");

if ( NULL == ListOfFunc1 )
{
printf("Bad List!\n");
return;
}

/* make circle */
while ( *ppChangedPointer )
{
ppChangedPointer = &(*ppChangedPointer)->pNext;
}

*ppChangedPointer = ListOfFunc1;

CircleHead.pNext = ListOfFunc1;

/* destroy ListOfFunc1 */
ListOfFunc1 = NULL;

/* Output */
printf("\nOutput:\n");

pTemp = CircleHead.pNext;

while ( 1 )
{
printf("%5d", pTemp->iNum);

if ( pTemp->pNext != CircleHead.pNext )
{
pTemp = pTemp->pNext;
}
else
{
break;
}
}
printf("\n");

return;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2007-06-20
不要毕业了
第2个回答  2007-06-21
好久都没看这方面的书了,建议你到书店或者图书馆找本书看看!!
相似回答