資料結構,單鏈表的實作
用C語言撰寫程式,完成以下功能:
(1)運行時輸入資料,創建一個單鏈表
(2)可在單鏈表的任意位置插入新結點
(3)可洗掉單鏈表的任意一個結點
(4)在單鏈表中查找結點
(5)輸出單鏈表
uj5u.com熱心網友回復:
#include <stdio.h>#include <malloc.h>
/*
1.運行時輸入資料
2.任意位置插入新節點
3.洗掉任意節點
4.查找節點
5.輸出鏈表
*/
typedef struct _NODE_
{
int data;
_NODE_ *next;
}NODE,*PNODE;
PNODE head = NULL;
void print_menu()
{
printf("********輸入對應的數字進行操作,然后按回車\n");
printf("********1.插入節點\n");
printf("********2.洗掉節點\n");
printf("********3.查找節點\n");
printf("********4.查看所有節點\n");
printf("********q.退出\n");
}
int node_num()
{
int num = 0;
if(!head)
return num;
PNODE node = head;
while(node)
{
num++;
node = node->next;
}
return num;
}
void insert_node()
{
int data;
int num = node_num();
int pos = 0;
printf("請輸入要插入的資料位置,然后按回車(%d-%d):\n",1,num+1);
scanf("%d",&pos);
if(pos >= num+1)
pos = num+1;
printf("請輸入要插入的資料(正整數),然后按回車:\n");
scanf("%d",&data);
PNODE node = (PNODE)malloc(sizeof(NODE));
node->data = data;
pos--;
if(pos < 0)
pos = 0;
PNODE n = head;
PNODE prev = head;
int i=0;
if(!n || pos == 0)
{
node->next = head;
head = node;
}
else
{
while(n)
{
i++;
prev = n;
n = n->next;
if(i == pos)
{
prev->next = node;
node->next = n;
break;
}
}
}
}
void find_node()
{
printf("請輸入要洗掉的節點的資料值,然后按回車\n");
int data = 0;
scanf("%d",&data);
PNODE node = head;
bool found = false;
while(node)
{
if(node->data == data)
{
printf("找到節點值為%d的節點\n",data);
found = true;
break;
}
node = node->next;
}
if(!found)
{
printf("沒有找到節點值為%d的節點\n",data);
}
}
void delete_node()
{
printf("請輸入要洗掉的節點的資料值,然后按回車\n");
int data = 0;
scanf("%d",&data);
PNODE node =head;
PNODE prev = head;
while( node )
{
if( node->data == data)
{
if(prev)
{
prev->next = node->next;
free(node);
}
break;
}
prev = node;
node = node->next;
}
}
void view_node()
{
PNODE node = head;
while(node)
{
printf("Data: %d\n",node->data);
node = node->next;
}
}
int main()
{
head = NULL;
print_menu();
while(true)
{
char c=getchar();
switch(c)
{
case '1':
insert_node();
break;
case '2':
delete_node();
break;
case '3':
find_node();
break;
case '4':
view_node();
break;
case 'q':
return 0;
default:
break;
}
}
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/61566.html
標籤:新手樂園
上一篇:關于結構體的疑問!
